Author: mikerice Date: Wed May 8 10:15:21 2019 New Revision: 360271 URL: http://llvm.org/viewvc/llvm-project?rev=360271&view=rev Log: 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 Added: cfe/trunk/test/Headers/Inputs/ms-crt/ cfe/trunk/test/Headers/Inputs/ms-crt/corecrt.h (with props) cfe/trunk/test/Headers/Inputs/ms-crt/vcruntime.h (with props) cfe/trunk/test/Headers/ms-additional-includes.cpp (with props) Modified: cfe/trunk/lib/Headers/stdarg.h cfe/trunk/lib/Headers/stddef.h cfe/trunk/test/Headers/c11.c cfe/trunk/test/Headers/ms-null-ms-header-vs-stddef.cpp Modified: cfe/trunk/lib/Headers/stdarg.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/stdarg.h?rev=360271&r1=360270&r2=360271&view=diff ============================================================================== --- cfe/trunk/lib/Headers/stdarg.h (original) +++ cfe/trunk/lib/Headers/stdarg.h Wed May 8 10:15:21 2019 @@ -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 Modified: cfe/trunk/lib/Headers/stddef.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/stddef.h?rev=360271&r1=360270&r2=360271&view=diff ============================================================================== --- cfe/trunk/lib/Headers/stddef.h (original) +++ cfe/trunk/lib/Headers/stddef.h Wed May 8 10:15:21 2019 @@ -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 Added: cfe/trunk/test/Headers/Inputs/ms-crt/corecrt.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Headers/Inputs/ms-crt/corecrt.h?rev=360271&view=auto ============================================================================== --- cfe/trunk/test/Headers/Inputs/ms-crt/corecrt.h (added) +++ cfe/trunk/test/Headers/Inputs/ms-crt/corecrt.h Wed May 8 10:15:21 2019 @@ -0,0 +1 @@ +#pragma once Propchange: cfe/trunk/test/Headers/Inputs/ms-crt/corecrt.h ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cfe/trunk/test/Headers/Inputs/ms-crt/corecrt.h ------------------------------------------------------------------------------ svn:keywords = Author Date Id Rev URL Propchange: cfe/trunk/test/Headers/Inputs/ms-crt/corecrt.h ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: cfe/trunk/test/Headers/Inputs/ms-crt/vcruntime.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Headers/Inputs/ms-crt/vcruntime.h?rev=360271&view=auto ============================================================================== --- cfe/trunk/test/Headers/Inputs/ms-crt/vcruntime.h (added) +++ cfe/trunk/test/Headers/Inputs/ms-crt/vcruntime.h Wed May 8 10:15:21 2019 @@ -0,0 +1 @@ +#pragma once Propchange: cfe/trunk/test/Headers/Inputs/ms-crt/vcruntime.h ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cfe/trunk/test/Headers/Inputs/ms-crt/vcruntime.h ------------------------------------------------------------------------------ svn:keywords = Author Date Id Rev URL Propchange: cfe/trunk/test/Headers/Inputs/ms-crt/vcruntime.h ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: cfe/trunk/test/Headers/c11.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Headers/c11.c?rev=360271&r1=360270&r2=360271&view=diff ============================================================================== --- cfe/trunk/test/Headers/c11.c (original) +++ cfe/trunk/test/Headers/c11.c Wed May 8 10:15:21 2019 @@ -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+{{}} Added: cfe/trunk/test/Headers/ms-additional-includes.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Headers/ms-additional-includes.cpp?rev=360271&view=auto ============================================================================== --- cfe/trunk/test/Headers/ms-additional-includes.cpp (added) +++ cfe/trunk/test/Headers/ms-additional-includes.cpp Wed May 8 10:15:21 2019 @@ -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 Propchange: cfe/trunk/test/Headers/ms-additional-includes.cpp ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cfe/trunk/test/Headers/ms-additional-includes.cpp ------------------------------------------------------------------------------ svn:keywords = Author Date Id Rev URL Propchange: cfe/trunk/test/Headers/ms-additional-includes.cpp ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: cfe/trunk/test/Headers/ms-null-ms-header-vs-stddef.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Headers/ms-null-ms-header-vs-stddef.cpp?rev=360271&r1=360270&r2=360271&view=diff ============================================================================== --- cfe/trunk/test/Headers/ms-null-ms-header-vs-stddef.cpp (original) +++ cfe/trunk/test/Headers/ms-null-ms-header-vs-stddef.cpp Wed May 8 10:15:21 2019 @@ -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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits