Selaa lähdekoodia

Do not predefine __EXCEPTIONS in clang-cl (PR19977)

Patch by Ehsan Akhgari! (Test tweak by me.)

Differential Revision: http://reviews.llvm.org/D4065

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210582 91177308-0d34-0410-b5e6-96231b3b80d8
Hans Wennborg 11 vuotta sitten
vanhempi
commit
054c6195b1
2 muutettua tiedostoa jossa 7 lisäystä ja 1 poistoa
  1. 1 1
      lib/Frontend/InitPreprocessor.cpp
  2. 6 0
      test/Frontend/exceptions.c

+ 1 - 1
lib/Frontend/InitPreprocessor.cpp

@@ -491,7 +491,7 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
     Builder.defineMacro("__BLOCKS__");
     Builder.defineMacro("__BLOCKS__");
   }
   }
 
 
-  if (LangOpts.CXXExceptions)
+  if (!LangOpts.MSVCCompat && LangOpts.CXXExceptions)
     Builder.defineMacro("__EXCEPTIONS");
     Builder.defineMacro("__EXCEPTIONS");
   if (LangOpts.RTTI)
   if (LangOpts.RTTI)
     Builder.defineMacro("__GXX_RTTI");
     Builder.defineMacro("__GXX_RTTI");

+ 6 - 0
test/Frontend/exceptions.c

@@ -0,0 +1,6 @@
+// RUN: %clang_cc1 -fms-compatibility -fexceptions -fcxx-exceptions -verify %s
+// expected-no-diagnostics
+
+#if defined(__EXCEPTIONS)
+#error __EXCEPTIONS should not be defined.
+#endif