summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-03-26 12:16:15 +0000
committerDouglas Gregor <dgregor@apple.com>2011-03-26 12:16:15 +0000
commit7bf3fbe6e16780391a2a2c54aea352a2eaff7ae3 (patch)
treef61a788ed2130cf9af2ae71b52dd1fee215dc742 /clang
parent1baf38f5a6edfbaa402f1dbda9dfa30fe02d5163 (diff)
downloadbcm5719-llvm-7bf3fbe6e16780391a2a2c54aea352a2eaff7ae3.tar.gz
bcm5719-llvm-7bf3fbe6e16780391a2a2c54aea352a2eaff7ae3.zip
Add a __has_feature check for the 'availability' attribute
llvm-svn: 128337
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Lex/PPMacroExpansion.cpp1
-rw-r--r--clang/test/Parser/attr-availability.c5
2 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Lex/PPMacroExpansion.cpp b/clang/lib/Lex/PPMacroExpansion.cpp
index e1fc0ba88fc..71f332769e7 100644
--- a/clang/lib/Lex/PPMacroExpansion.cpp
+++ b/clang/lib/Lex/PPMacroExpansion.cpp
@@ -530,6 +530,7 @@ static bool HasFeature(const Preprocessor &PP, const IdentifierInfo *II) {
return llvm::StringSwitch<bool>(II->getName())
.Case("attribute_analyzer_noreturn", true)
+ .Case("attribute_availability", true)
.Case("attribute_cf_returns_not_retained", true)
.Case("attribute_cf_returns_retained", true)
.Case("attribute_deprecated_with_message", true)
diff --git a/clang/test/Parser/attr-availability.c b/clang/test/Parser/attr-availability.c
index 63bb5271e53..269f90847d6 100644
--- a/clang/test/Parser/attr-availability.c
+++ b/clang/test/Parser/attr-availability.c
@@ -1,4 +1,9 @@
// RUN: %clang_cc1 -fsyntax-only -verify %s
+
+#if !__has_feature(attribute_availability)
+# error 'availability' attribute is not available
+#endif
+
void f0() __attribute__((availability(macosx,introduced=10.2,deprecated=10.4,obsoleted=10.6)));
void f1() __attribute__((availability(macosx,deprecated=10.4,introduced=10.2,obsoleted=10.6)));
OpenPOWER on IntegriCloud