diff options
author | Douglas Gregor <dgregor@apple.com> | 2015-06-29 18:11:42 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2015-06-29 18:11:42 +0000 |
commit | 4c27d104c65d0cc98d6c4c38eb6ce1ed633a5204 (patch) | |
tree | ca4accd6eee6d563634abfdbed455576e20b343d | |
parent | 8fee84d01ee57ddb1bf1308e7e781f377c2001fa (diff) | |
download | bcm5719-llvm-4c27d104c65d0cc98d6c4c38eb6ce1ed633a5204.tar.gz bcm5719-llvm-4c27d104c65d0cc98d6c4c38eb6ce1ed633a5204.zip |
Make __has_feature(nullability) and __has_extension(nullability) always true.
These are _Underbar_capital-prefixed additions to the language that
shouldn't depend on language standard.
llvm-svn: 240976
-rw-r--r-- | clang/lib/Lex/PPMacroExpansion.cpp | 6 | ||||
-rw-r--r-- | clang/test/SemaCXX/nullability.cpp | 5 |
2 files changed, 7 insertions, 4 deletions
diff --git a/clang/lib/Lex/PPMacroExpansion.cpp b/clang/lib/Lex/PPMacroExpansion.cpp index 3855c802aeb..d52519e3313 100644 --- a/clang/lib/Lex/PPMacroExpansion.cpp +++ b/clang/lib/Lex/PPMacroExpansion.cpp @@ -1052,7 +1052,7 @@ static bool HasFeature(const Preprocessor &PP, const IdentifierInfo *II) { .Case("address_sanitizer", LangOpts.Sanitize.hasOneOf(SanitizerKind::Address | SanitizerKind::KernelAddress)) - .Case("assume_nonnull", LangOpts.ObjC1 || LangOpts.GNUMode) + .Case("assume_nonnull", true) .Case("attribute_analyzer_noreturn", true) .Case("attribute_availability", true) .Case("attribute_availability_with_message", true) @@ -1077,7 +1077,7 @@ static bool HasFeature(const Preprocessor &PP, const IdentifierInfo *II) { .Case("cxx_exceptions", LangOpts.CXXExceptions) .Case("cxx_rtti", LangOpts.RTTI) .Case("enumerator_attributes", true) - .Case("nullability", LangOpts.ObjC1 || LangOpts.GNUMode) + .Case("nullability", true) .Case("memory_sanitizer", LangOpts.Sanitize.has(SanitizerKind::Memory)) .Case("thread_sanitizer", LangOpts.Sanitize.has(SanitizerKind::Thread)) .Case("dataflow_sanitizer", LangOpts.Sanitize.has(SanitizerKind::DataFlow)) @@ -1226,8 +1226,6 @@ static bool HasExtension(const Preprocessor &PP, const IdentifierInfo *II) { // Because we inherit the feature list from HasFeature, this string switch // must be less restrictive than HasFeature's. return llvm::StringSwitch<bool>(Extension) - .Case("assume_nonnull", true) - .Case("nullability", true) // C11 features supported by other languages as extensions. .Case("c_alignas", true) .Case("c_alignof", true) diff --git a/clang/test/SemaCXX/nullability.cpp b/clang/test/SemaCXX/nullability.cpp index fa5d344a953..edce6b057bd 100644 --- a/clang/test/SemaCXX/nullability.cpp +++ b/clang/test/SemaCXX/nullability.cpp @@ -1,5 +1,10 @@ // RUN: %clang_cc1 -std=c++11 -fsyntax-only -Wno-nullability-declspec %s -verify +#if __has_feature(nullability) +#else +# error nullability feature should be defined +#endif + typedef decltype(nullptr) nullptr_t; class X { |