summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2010-03-05 22:43:32 +0000
committerTed Kremenek <kremenek@apple.com>2010-03-05 22:43:32 +0000
commita00c5db1a8091d0ae70428f0c615229572136232 (patch)
tree7b537db7ed75188e4374bc382a88116445e06ce4
parenta6d3ab394c4cd854b5a7b600a578a7a75c69507c (diff)
downloadbcm5719-llvm-a00c5db1a8091d0ae70428f0c615229572136232.tar.gz
bcm5719-llvm-a00c5db1a8091d0ae70428f0c615229572136232.zip
Augment __has_feature to report that Clang supports adding attribute 'unused'
to an Objective-C instance variable. llvm-svn: 97850
-rw-r--r--clang/lib/Lex/PPMacroExpansion.cpp1
-rw-r--r--clang/test/SemaObjC/unused.m10
2 files changed, 10 insertions, 1 deletions
diff --git a/clang/lib/Lex/PPMacroExpansion.cpp b/clang/lib/Lex/PPMacroExpansion.cpp
index d60cf0804f5..5fe2ef172e2 100644
--- a/clang/lib/Lex/PPMacroExpansion.cpp
+++ b/clang/lib/Lex/PPMacroExpansion.cpp
@@ -505,6 +505,7 @@ static bool HasFeature(const Preprocessor &PP, const IdentifierInfo *II) {
.Case("attribute_cf_returns_retained", true)
.Case("attribute_ns_returns_not_retained", true)
.Case("attribute_ns_returns_retained", true)
+ .Case("attribute_objc_ivar_unused", true)
.Default(false);
}
diff --git a/clang/test/SemaObjC/unused.m b/clang/test/SemaObjC/unused.m
index e99418875ae..a33a1bc02f9 100644
--- a/clang/test/SemaObjC/unused.m
+++ b/clang/test/SemaObjC/unused.m
@@ -39,7 +39,15 @@ void test2() {
// instance variables, which GCC does not.
//===------------------------------------------------------------------------===
+#if __has_feature(attribute_objc_ivar_unused)
+#define UNUSED_IVAR __attribute__((unused))
+#else
+#error __attribute__((unused)) not supported on ivars
+#endif
+
@interface TestUnusedIvar {
- id x __attribute__((unused)); // no-warning
+ id y __attribute__((unused)); // no-warning
+ id x UNUSED_IVAR; // no-warning
}
@end
+
OpenPOWER on IntegriCloud