From: Eric Christopher Date: Fri, 3 Dec 2010 06:58:14 +0000 (+0000) Subject: Add some warning messages about invalid use of common/nocommon attributes. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=722109c1b7718d3e8aab075ce65007b372822199;p=clang Add some warning messages about invalid use of common/nocommon attributes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120799 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaDeclAttr.cpp b/lib/Sema/SemaDeclAttr.cpp index ee03d1f7f1..ad0313d976 100644 --- a/lib/Sema/SemaDeclAttr.cpp +++ b/lib/Sema/SemaDeclAttr.cpp @@ -745,12 +745,20 @@ static void HandleMayAliasAttr(Decl *d, const AttributeList &Attr, Sema &S) { static void HandleNoCommonAttr(Decl *d, const AttributeList &Attr, Sema &S) { assert(Attr.isInvalid() == false); - d->addAttr(::new (S.Context) NoCommonAttr(Attr.getLoc(), S.Context)); + if (isa(d)) + d->addAttr(::new (S.Context) NoCommonAttr(Attr.getLoc(), S.Context)); + else + S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) + << Attr.getName() << 12 /* variable */; } static void HandleCommonAttr(Decl *d, const AttributeList &Attr, Sema &S) { assert(Attr.isInvalid() == false); - d->addAttr(::new (S.Context) CommonAttr(Attr.getLoc(), S.Context)); + if (isa(d)) + d->addAttr(::new (S.Context) CommonAttr(Attr.getLoc(), S.Context)); + else + S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) + << Attr.getName() << 12 /* variable */; } static void HandleNoReturnAttr(Decl *d, const AttributeList &Attr, Sema &S) {