summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/Headers/stdarg.h5
-rw-r--r--clang/lib/Headers/stddef.h6
-rw-r--r--clang/test/Headers/Inputs/ms-crt/corecrt.h1
-rw-r--r--clang/test/Headers/Inputs/ms-crt/vcruntime.h1
-rw-r--r--clang/test/Headers/c11.c3
-rw-r--r--clang/test/Headers/ms-additional-includes.cpp10
-rw-r--r--clang/test/Headers/ms-null-ms-header-vs-stddef.cpp3
7 files changed, 27 insertions, 2 deletions
diff --git a/clang/lib/Headers/stdarg.h b/clang/lib/Headers/stdarg.h
index 0bc39408c1e..97b3c082ec8 100644
--- a/clang/lib/Headers/stdarg.h
+++ b/clang/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 <vcruntime.h>
+#endif
+
#ifndef _VA_LIST
typedef __builtin_va_list va_list;
#define _VA_LIST
diff --git a/clang/lib/Headers/stddef.h b/clang/lib/Headers/stddef.h
index 15acd4427ca..860c909eff2 100644
--- a/clang/lib/Headers/stddef.h
+++ b/clang/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 <corecrt.h>
+#endif
+
#define __need_ptrdiff_t
#define __need_size_t
#define __need_wchar_t
diff --git a/clang/test/Headers/Inputs/ms-crt/corecrt.h b/clang/test/Headers/Inputs/ms-crt/corecrt.h
new file mode 100644
index 00000000000..6f70f09beec
--- /dev/null
+++ b/clang/test/Headers/Inputs/ms-crt/corecrt.h
@@ -0,0 +1 @@
+#pragma once
diff --git a/clang/test/Headers/Inputs/ms-crt/vcruntime.h b/clang/test/Headers/Inputs/ms-crt/vcruntime.h
new file mode 100644
index 00000000000..6f70f09beec
--- /dev/null
+++ b/clang/test/Headers/Inputs/ms-crt/vcruntime.h
@@ -0,0 +1 @@
+#pragma once
diff --git a/clang/test/Headers/c11.c b/clang/test/Headers/c11.c
index 6594823c273..e5e8ae425f9 100644
--- a/clang/test/Headers/c11.c
+++ b/clang/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+{{}}
diff --git a/clang/test/Headers/ms-additional-includes.cpp b/clang/test/Headers/ms-additional-includes.cpp
new file mode 100644
index 00000000000..3c6506a5a51
--- /dev/null
+++ b/clang/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 <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
diff --git a/clang/test/Headers/ms-null-ms-header-vs-stddef.cpp b/clang/test/Headers/ms-null-ms-header-vs-stddef.cpp
index f39a0cafaa0..bd81b6287bf 100644
--- a/clang/test/Headers/ms-null-ms-header-vs-stddef.cpp
+++ b/clang/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 <crtdefs.h>) defines __null
OpenPOWER on IntegriCloud