r360271 - Include corecrt.h in stddef.h and vcruntime.h in stdarg.h to improve MS

Mike Rice via cfe-commits cfe-commits at lists.llvm.org
Wed May 8 10:15:21 PDT 2019


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




More information about the cfe-commits mailing list