summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/Basic/Targets.cpp13
-rw-r--r--clang/lib/Frontend/InitPreprocessor.cpp12
-rw-r--r--clang/test/Preprocessor/microsoft-ext.c8
3 files changed, 18 insertions, 15 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index 2cf90701edf..1558a752c30 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -577,19 +577,6 @@ protected:
if (Opts.POSIXThreads)
Builder.defineMacro("_MT");
- if (Opts.MSCVersion != 0)
- Builder.defineMacro("_MSC_VER", Twine(Opts.MSCVersion));
-
- if (Opts.MicrosoftExt) {
- Builder.defineMacro("_MSC_EXTENSIONS");
-
- if (Opts.CPlusPlus11) {
- Builder.defineMacro("_RVALUE_REFERENCES_V2_SUPPORTED");
- Builder.defineMacro("_RVALUE_REFERENCES_SUPPORTED");
- Builder.defineMacro("_NATIVE_NULLPTR_SUPPORTED");
- }
- }
-
Builder.defineMacro("_INTEGRAL_MAX_BITS", "64");
}
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp
index a86fe514261..95d9e510f89 100644
--- a/clang/lib/Frontend/InitPreprocessor.cpp
+++ b/clang/lib/Frontend/InitPreprocessor.cpp
@@ -507,7 +507,19 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
Builder.defineMacro("__private_extern__", "extern");
}
+ if (LangOpts.MSCVersion != 0)
+ Builder.defineMacro("_MSC_VER", Twine(LangOpts.MSCVersion));
+
if (LangOpts.MicrosoftExt) {
+ // Define feature support macros that MSVC provides.
+ Builder.defineMacro("_MSC_EXTENSIONS");
+
+ if (LangOpts.CPlusPlus11) {
+ Builder.defineMacro("_RVALUE_REFERENCES_V2_SUPPORTED");
+ Builder.defineMacro("_RVALUE_REFERENCES_SUPPORTED");
+ Builder.defineMacro("_NATIVE_NULLPTR_SUPPORTED");
+ }
+
if (LangOpts.WChar) {
// wchar_t supported as a keyword.
Builder.defineMacro("_WCHAR_T_DEFINED");
diff --git a/clang/test/Preprocessor/microsoft-ext.c b/clang/test/Preprocessor/microsoft-ext.c
index b03f6775429..541cd4387dd 100644
--- a/clang/test/Preprocessor/microsoft-ext.c
+++ b/clang/test/Preprocessor/microsoft-ext.c
@@ -1,5 +1,9 @@
-// RUN: %clang_cc1 -E -fms-compatibility %s -o %t
-// RUN: FileCheck %s < %t
+// RUN: %clang_cc1 -triple i686-pc-win32 -E -fms-extensions -fms-compatibility %s -o - | FileCheck %s
+// RUN: %clang_cc1 -triple i686-linux-gnu -E -fms-extensions -fms-compatibility %s -o - | FileCheck %s
+
+#ifndef _MSC_EXTENSIONS
+# error "_MSC_EXTENSIONS not defined with -fms-extensions"
+#endif
# define M2(x, y) x + y
# define P(x, y) {x, y}
OpenPOWER on IntegriCloud