Explorar o código

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 %!s(int64=11) %!d(string=hai) anos
pai
achega
054c6195b1
Modificáronse 2 ficheiros con 7 adicións e 1 borrados
  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__");
   }
 
-  if (LangOpts.CXXExceptions)
+  if (!LangOpts.MSVCCompat && LangOpts.CXXExceptions)
     Builder.defineMacro("__EXCEPTIONS");
   if (LangOpts.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