]> granicus.if.org Git - clang/commitdiff
Semantic checking for exception specifications should be triggered by
authorJohn McCall <rjmccall@apple.com>
Wed, 2 Mar 2011 02:04:40 +0000 (02:04 +0000)
committerJohn McCall <rjmccall@apple.com>
Wed, 2 Mar 2011 02:04:40 +0000 (02:04 +0000)
whether C++ exceptions are enabled, not exceptions in general.  PR9358.

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

lib/Sema/SemaExceptionSpec.cpp
test/CXX/basic/basic.stc/basic.stc.dynamic/p2.cpp
test/CXX/except/except.spec/p14.cpp
test/CXX/temp/temp.decls/temp.variadic/p4.cpp
test/SemaCXX/MicrosoftExtensions.cpp
test/SemaCXX/exception-spec-no-exceptions.cpp
test/SemaCXX/exception-spec.cpp

index 5d7993b1afbaa9dca60ef964e4e9b0823ee38d40..123e185cab3d52be43517fd19b281b3bdd25ca62 100644 (file)
@@ -160,7 +160,7 @@ bool Sema::CheckEquivalentExceptionSpec(FunctionDecl *Old, FunctionDecl *New) {
 
     // If exceptions are disabled, suppress the warning about missing
     // exception specifications for new and delete operators.
-    if (!getLangOptions().Exceptions) {
+    if (!getLangOptions().CXXExceptions) {
       switch (New->getDeclName().getCXXOverloadedOperator()) {
       case OO_New:
       case OO_Array_New:
@@ -249,7 +249,7 @@ bool Sema::CheckEquivalentExceptionSpec(const PartialDiagnostic &DiagID,
                                         bool *MissingExceptionSpecification,
                                      bool *MissingEmptyExceptionSpecification)  {
   // Just completely ignore this under -fno-exceptions.
-  if (!getLangOptions().Exceptions)
+  if (!getLangOptions().CXXExceptions)
     return false;
 
   if (MissingExceptionSpecification)
@@ -331,7 +331,7 @@ bool Sema::CheckExceptionSpecSubset(
     const FunctionProtoType *Subset, SourceLocation SubLoc) {
 
   // Just auto-succeed under -fno-exceptions.
-  if (!getLangOptions().Exceptions)
+  if (!getLangOptions().CXXExceptions)
     return false;
 
   // FIXME: As usual, we could be more specific in our error messages, but
index 37a4f976badadbc3960d5c2c5e5e462a4442d1d0..47b51585556f825f2f10f37f6ad9311ee08e7c42 100644 (file)
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -fsyntax-only -fexceptions -verify %s
+// RUN: %clang_cc1 -fsyntax-only -fexceptions -fcxx-exceptions -verify %s
 int *use_new(int N) {
   if (N == 1)
     return new int;
index 9450b1cf80d7f05cc18c70c0a7bc87b00364dd24..f5e83eaac6182cb01cd10492e98cbd034a9f5674 100644 (file)
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -fexceptions -verify %s
+// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -verify %s
 struct A { };
 struct B { };
 struct C { };
index e2fa122937258d428875203f73c8f1fc346e12eb..71839727e0d11899ad3f7f06c6b740d987282329 100644 (file)
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -std=c++0x -fsyntax-only -fexceptions -verify %s
+// RUN: %clang_cc1 -std=c++0x -fsyntax-only -fexceptions -fcxx-exceptions -verify %s
 
 template<typename... Types> struct tuple;
 template<int I> struct int_c;
index 30ad4d0482f63b33cb189d3acf43f307932ba0c0..6a12d0dc963f08e99f9803f5902b33d560e59463 100644 (file)
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 %s -fsyntax-only -Wmicrosoft -verify -fms-extensions -fexceptions
+// RUN: %clang_cc1 %s -fsyntax-only -Wmicrosoft -verify -fms-extensions -fexceptions -fcxx-exceptions
 
 
 // ::type_info is predeclared with forward class declartion
index 1fe45b0cffcbc2b8f7d63a8dab758126dc63ae91..2e180706d3b912ac055b2e564045ed4f8b0bec80 100644 (file)
@@ -1,7 +1,8 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
+// RUN: %clang_cc1 -fsyntax-only -verify -fexceptions -fobjc-exceptions %s
 
-// Note: this is intentionally -fno-exceptions, not just accidentally
-// so because that's the current -cc1 default.
+// Note that we're specifically excluding -fcxx-exceptions in the command line above.
+
+// That this should work even with -fobjc-exceptions is PR9358
 
 // PR7243: redeclarations
 namespace test0 {
index b4bc78aa9a6d3ec57463dea3a32330fe02afa5ac..80fd2c3d883d77ff23f572e2b15048516a9f706c 100644 (file)
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fexceptions %s
+// RUN: %clang_cc1 -fsyntax-only -verify -fexceptions -fcxx-exceptions %s
 
 // Straight from the standard:
 // Plain function with spec