Index: cfe/trunk/lib/Headers/stdarg.h =================================================================== --- cfe/trunk/lib/Headers/stdarg.h +++ cfe/trunk/lib/Headers/stdarg.h @@ -10,6 +10,11 @@ #ifndef __STDARG_H #define __STDARG_H +#if defined(_MSC_VER) +/* Include otherwise unneeded header for MSVC compatibility. */ +#include +#endif + #ifndef _VA_LIST typedef __builtin_va_list va_list; #define _VA_LIST Index: cfe/trunk/lib/Headers/stddef.h =================================================================== --- cfe/trunk/lib/Headers/stddef.h +++ cfe/trunk/lib/Headers/stddef.h @@ -18,6 +18,12 @@ #if !__has_feature(modules) #define __STDDEF_H #endif + +#if defined(_MSC_VER) +/* Include otherwise unneeded header for MSVC compatibility. */ +#include +#endif + #define __need_ptrdiff_t #define __need_size_t #define __need_wchar_t Index: cfe/trunk/test/Headers/Inputs/ms-crt/corecrt.h =================================================================== --- cfe/trunk/test/Headers/Inputs/ms-crt/corecrt.h +++ cfe/trunk/test/Headers/Inputs/ms-crt/corecrt.h @@ -0,0 +1 @@ +#pragma once Index: cfe/trunk/test/Headers/Inputs/ms-crt/vcruntime.h =================================================================== --- cfe/trunk/test/Headers/Inputs/ms-crt/vcruntime.h +++ cfe/trunk/test/Headers/Inputs/ms-crt/vcruntime.h @@ -0,0 +1 @@ +#pragma once Index: cfe/trunk/test/Headers/c11.c =================================================================== --- cfe/trunk/test/Headers/c11.c +++ cfe/trunk/test/Headers/c11.c @@ -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+{{}} Index: cfe/trunk/test/Headers/ms-additional-includes.cpp =================================================================== --- cfe/trunk/test/Headers/ms-additional-includes.cpp +++ cfe/trunk/test/Headers/ms-additional-includes.cpp @@ -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 +// CHECK: including file:{{.*}}stddef.h +// CHECK: including file:{{.*}}corecrt.h +#include +// CHECK: including file:{{.*}}stdarg.h +// CHECK: including file:{{.*}}vcruntime.h Index: cfe/trunk/test/Headers/ms-null-ms-header-vs-stddef.cpp =================================================================== --- cfe/trunk/test/Headers/ms-null-ms-header-vs-stddef.cpp +++ cfe/trunk/test/Headers/ms-null-ms-header-vs-stddef.cpp @@ -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 ) defines __null