]> granicus.if.org Git - clang/commitdiff
Frontend: Define __EXCEPTIONS if -fexceptions is passed
authorDavid Majnemer <david.majnemer@gmail.com>
Mon, 27 Oct 2014 20:02:19 +0000 (20:02 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Mon, 27 Oct 2014 20:02:19 +0000 (20:02 +0000)
GCC defines __EXCEPTIONS, regardless of language mode, if -fexceptions
is passed.  We should do the same.

This fixes PR21358.

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

lib/Frontend/InitPreprocessor.cpp
test/Frontend/exceptions.c
test/Preprocessor/predefined-exceptions.m

index 802b2a95cc84c80bc590986454491dc5b974692e..476e214232f539ea975c071e078ddb6c41b97ad6 100644 (file)
@@ -550,7 +550,7 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
     Builder.defineMacro("__BLOCKS__");
   }
 
-  if (!LangOpts.MSVCCompat && LangOpts.CXXExceptions)
+  if (!LangOpts.MSVCCompat && LangOpts.Exceptions)
     Builder.defineMacro("__EXCEPTIONS");
   if (!LangOpts.MSVCCompat && LangOpts.RTTI)
     Builder.defineMacro("__GXX_RTTI");
index 4bbaaa39bfa61af99ff190584fde771afe1542fb..981b5b9045b518731038f98a031817e3d1a421fd 100644 (file)
@@ -1,6 +1,9 @@
-// RUN: %clang_cc1 -fms-compatibility -fexceptions -fcxx-exceptions -verify %s
+// RUN: %clang_cc1 -fms-compatibility -fexceptions -fcxx-exceptions -DMS_MODE -verify %s
 // expected-no-diagnostics
 
-#if defined(__EXCEPTIONS)
+// RUN: %clang_cc1 -fms-compatibility -fexceptions -verify %s
+// expected-no-diagnostics
+
+#if defined(MS_MODE) && defined(__EXCEPTIONS)
 #error __EXCEPTIONS should not be defined.
 #endif
index c13f429e37632abe15817ee3a2392645d56edfd0..0791075dfc7579a99812da8bfd5a553d382a7663 100644 (file)
@@ -1,6 +1,6 @@
 // RUN: %clang_cc1 -x objective-c -fobjc-exceptions -fexceptions -E -dM %s | FileCheck -check-prefix=CHECK-OBJC-NOCXX %s 
 // CHECK-OBJC-NOCXX: #define OBJC_ZEROCOST_EXCEPTIONS 1
-// CHECK-OBJC-NOCXX-NOT: #define __EXCEPTIONS 1
+// CHECK-OBJC-NOCXX: #define __EXCEPTIONS 1
 
 // RUN: %clang_cc1 -x objective-c++ -fobjc-exceptions -fexceptions -fcxx-exceptions -E -dM %s | FileCheck -check-prefix=CHECK-OBJC-CXX %s 
 // CHECK-OBJC-CXX: #define OBJC_ZEROCOST_EXCEPTIONS 1