]> granicus.if.org Git - clang/commitdiff
Move -fms-extensions predefined macros into InitPreprocessor
authorReid Kleckner <reid@kleckner.net>
Wed, 16 Apr 2014 19:47:06 +0000 (19:47 +0000)
committerReid Kleckner <reid@kleckner.net>
Wed, 16 Apr 2014 19:47:06 +0000 (19:47 +0000)
If someone on Linux asks for -fms-extensions, there's no reason not to
define the feature test macros that MSVC defines.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@206413 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Basic/Targets.cpp
lib/Frontend/InitPreprocessor.cpp
test/Preprocessor/microsoft-ext.c

index 2cf90701edff934160a02c98e7a1cb1f48eb9a4b..1558a752c30864cf487d246c942d4a23b0c27ac8 100644 (file)
@@ -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");
   }
 
index a86fe514261687a5d523a76bc5b0f2bc2fabcfe3..95d9e510f89e31711dafaacdbc723898dabfd758 100644 (file)
@@ -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");
index b03f6775429a3fda356c9f63722e4f30338c4f87..541cd4387dd6407bfa0f77b37f6e05aa8a032e71 100644 (file)
@@ -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}