forked from OSchip/llvm-project
Lex: Fix __has_feature(cxx_exceptions) for objective C++
At one point, -fexceptions was a synonym for -fcxx-exceptions. While the driver options still enables cxx-exceptions by default, the cc1 flag is purely about exception tables and this doesn't account for objective C exceptions. Because of this, checking for the cxx_exceptions feature in objective C++ often gives the wrong answer. The cxx_exceptions feature should be based on the -fcxx-exceptions cc1 flag, not -fexceptions. Furthermore, at some point the tests were changed to use cc1 even though they were testing the driver behaviour. We're better off testing both the driver and cc1 here. llvm-svn: 206352
This commit is contained in:
parent
fe1c34266f
commit
4e3a01fa5f
|
@ -886,7 +886,7 @@ static bool HasFeature(const Preprocessor &PP, const IdentifierInfo *II) {
|
|||
.Case("attribute_unused_on_fields", true)
|
||||
.Case("blocks", LangOpts.Blocks)
|
||||
.Case("c_thread_safety_attributes", true)
|
||||
.Case("cxx_exceptions", LangOpts.Exceptions)
|
||||
.Case("cxx_exceptions", LangOpts.CXXExceptions)
|
||||
.Case("cxx_rtti", LangOpts.RTTI)
|
||||
.Case("enumerator_attributes", true)
|
||||
.Case("memory_sanitizer", LangOpts.Sanitize.Memory)
|
||||
|
|
|
@ -1,4 +1,10 @@
|
|||
// RUN: %clang_cc1 -E -fexceptions %s -o - | FileCheck --check-prefix=CHECK-EXCEPTIONS %s
|
||||
// RUN: %clang -E -fexceptions %s -o - | FileCheck --check-prefix=CHECK-EXCEPTIONS %s
|
||||
// RUN: %clang -E -fexceptions -fno-cxx-exceptions %s -o - | FileCheck --check-prefix=CHECK-NO-EXCEPTIONS %s
|
||||
// RUN: %clang -E -fno-exceptions %s -o - | FileCheck --check-prefix=CHECK-NO-EXCEPTIONS %s
|
||||
|
||||
// RUN: %clang_cc1 -E -fcxx-exceptions %s -o - | FileCheck --check-prefix=CHECK-EXCEPTIONS %s
|
||||
// RUN: %clang_cc1 -E -fobjc-exceptions %s -o - | FileCheck --check-prefix=CHECK-NO-EXCEPTIONS %s
|
||||
// RUN: %clang_cc1 -E -fexceptions %s -o - | FileCheck --check-prefix=CHECK-NO-EXCEPTIONS %s
|
||||
// RUN: %clang_cc1 -E %s -o - | FileCheck --check-prefix=CHECK-NO-EXCEPTIONS %s
|
||||
|
||||
#if __has_feature(cxx_exceptions)
|
||||
|
|
Loading…
Reference in New Issue