Include corecrt.h in stddef.h and vcruntime.h in stdarg.h to improve MS
compatibility. This allows some applications developed with MSVC to compile with clang without any extra changes. Fixes: llvm.org/PR40789 Differential Revision: https://reviews.llvm.org/D61646 llvm-svn: 360271
This commit is contained in:
parent
f31eba6494
commit
a0933bd8ec
|
@ -10,6 +10,11 @@
|
|||
#ifndef __STDARG_H
|
||||
#define __STDARG_H
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
/* Include otherwise unneeded header for MSVC compatibility. */
|
||||
#include <vcruntime.h>
|
||||
#endif
|
||||
|
||||
#ifndef _VA_LIST
|
||||
typedef __builtin_va_list va_list;
|
||||
#define _VA_LIST
|
||||
|
|
|
@ -18,6 +18,12 @@
|
|||
#if !__has_feature(modules)
|
||||
#define __STDDEF_H
|
||||
#endif
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
/* Include otherwise unneeded header for MSVC compatibility. */
|
||||
#include <corecrt.h>
|
||||
#endif
|
||||
|
||||
#define __need_ptrdiff_t
|
||||
#define __need_size_t
|
||||
#define __need_wchar_t
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
#pragma once
|
|
@ -0,0 +1 @@
|
|||
#pragma once
|
|
@ -2,7 +2,8 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -verify -std=c11 %s
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify -std=c11 -fmodules -fmodules-cache-path=%t %s -D__STDC_WANT_LIB_EXT1__=1
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify -std=c11 -ffreestanding %s
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify -std=c11 -triple i686-pc-win32 -fms-compatibility-version=17.00 %s
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify -std=c11 -triple i686-pc-win32 \
|
||||
// RUN: -fms-compatibility-version=17.00 -isystem %S/Inputs/ms-crt %s
|
||||
|
||||
noreturn int f(); // expected-error 1+{{}}
|
||||
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only --show-includes -triple i686-pc-win32 \
|
||||
// RUN: -isystem %S/Inputs/ms-crt -fms-compatibility-version=17.00 %s \
|
||||
// RUN: | FileCheck %s
|
||||
|
||||
#include <stddef.h>
|
||||
// CHECK: including file:{{.*}}stddef.h
|
||||
// CHECK: including file:{{.*}}corecrt.h
|
||||
#include <stdarg.h>
|
||||
// CHECK: including file:{{.*}}stdarg.h
|
||||
// CHECK: including file:{{.*}}vcruntime.h
|
|
@ -1,4 +1,5 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -triple i686-pc-win32 -fms-compatibility -fms-compatibility-version=17.00 %s
|
||||
// RUN: %clang_cc1 -fsyntax-only -triple i686-pc-win32 -fms-compatibility \
|
||||
// RUN: -isystem %S/Inputs/ms-crt -fms-compatibility-version=17.00 %s
|
||||
// RUN: %clang_cc1 -fsyntax-only -triple i386-mingw32 %s
|
||||
|
||||
// Something in MSVC's headers (pulled in e.g. by <crtdefs.h>) defines __null
|
||||
|
|
Loading…
Reference in New Issue