r220714 - Frontend: Define __EXCEPTIONS if -fexceptions is passed

David Majnemer david.majnemer at gmail.com
Mon Oct 27 13:02:19 PDT 2014


Author: majnemer
Date: Mon Oct 27 15:02:19 2014
New Revision: 220714

URL: http://llvm.org/viewvc/llvm-project?rev=220714&view=rev
Log:
Frontend: Define __EXCEPTIONS if -fexceptions is passed

GCC defines __EXCEPTIONS, regardless of language mode, if -fexceptions
is passed.  We should do the same.

This fixes PR21358.

Modified:
    cfe/trunk/lib/Frontend/InitPreprocessor.cpp
    cfe/trunk/test/Frontend/exceptions.c
    cfe/trunk/test/Preprocessor/predefined-exceptions.m

Modified: cfe/trunk/lib/Frontend/InitPreprocessor.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/InitPreprocessor.cpp?rev=220714&r1=220713&r2=220714&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/InitPreprocessor.cpp (original)
+++ cfe/trunk/lib/Frontend/InitPreprocessor.cpp Mon Oct 27 15:02:19 2014
@@ -550,7 +550,7 @@ static void InitializePredefinedMacros(c
     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");

Modified: cfe/trunk/test/Frontend/exceptions.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Frontend/exceptions.c?rev=220714&r1=220713&r2=220714&view=diff
==============================================================================
--- cfe/trunk/test/Frontend/exceptions.c (original)
+++ cfe/trunk/test/Frontend/exceptions.c Mon Oct 27 15:02:19 2014
@@ -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

Modified: cfe/trunk/test/Preprocessor/predefined-exceptions.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/predefined-exceptions.m?rev=220714&r1=220713&r2=220714&view=diff
==============================================================================
--- cfe/trunk/test/Preprocessor/predefined-exceptions.m (original)
+++ cfe/trunk/test/Preprocessor/predefined-exceptions.m Mon Oct 27 15:02:19 2014
@@ -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





More information about the cfe-commits mailing list