summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDeclAttr.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-07-25 04:39:19 +0000
committerTed Kremenek <kremenek@apple.com>2008-07-25 04:39:19 +0000
commit39c59a88877d1e742a25d707cf373187bcf9a1af (patch)
treef6de638f2ec2bb04b9fec2e01ac5d937f6bc3100 /clang/lib/Sema/SemaDeclAttr.cpp
parent7334350d31fb31fccbf969a52a06a4f7cec55191 (diff)
downloadbcm5719-llvm-39c59a88877d1e742a25d707cf373187bcf9a1af.tar.gz
bcm5719-llvm-39c59a88877d1e742a25d707cf373187bcf9a1af.zip
Implemented Sema support for attribute "unused".
llvm-svn: 54008
Diffstat (limited to 'clang/lib/Sema/SemaDeclAttr.cpp')
-rw-r--r--clang/lib/Sema/SemaDeclAttr.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp
index 04e3f0557b7..9a38f6cf351 100644
--- a/clang/lib/Sema/SemaDeclAttr.cpp
+++ b/clang/lib/Sema/SemaDeclAttr.cpp
@@ -339,6 +339,25 @@ static void HandleNoReturnAttr(Decl *d, const AttributeList &Attr, Sema &S) {
d->addAttr(new NoReturnAttr());
}
+static void HandleUnusedAttr(Decl *d, const AttributeList &Attr, Sema &S) {
+ // check the attribute arguments.
+ if (Attr.getNumArgs() != 0) {
+ S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments,
+ std::string("0"));
+ return;
+ }
+
+ VarDecl *VD = dyn_cast<VarDecl>(d);
+
+ if (!VD) {
+ S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type,
+ "unused", "variable");
+ return;
+ }
+
+ d->addAttr(new UnusedAttr());
+}
+
static void HandleDeprecatedAttr(Decl *d, const AttributeList &Attr, Sema &S) {
// check the attribute arguments.
if (Attr.getNumArgs() != 0) {
@@ -826,6 +845,7 @@ static void ProcessDeclAttribute(Decl *D, const AttributeList &Attr, Sema &S) {
case AttributeList::AT_format: HandleFormatAttr (D, Attr, S); break;
case AttributeList::AT_IBOutlet: HandleIBOutletAttr (D, Attr, S); break;
case AttributeList::AT_nonnull: HandleNonNullAttr (D, Attr, S); break;
+ case AttributeList::AT_unused: HandleUnusedAttr (D, Attr, S); break;
case AttributeList::AT_transparent_union:
HandleTransparentUnionAttr(D, Attr, S);
break;
OpenPOWER on IntegriCloud