diff options
author | Aaron Ballman <aaron@aaronballman.com> | 2013-11-20 21:41:42 +0000 |
---|---|---|
committer | Aaron Ballman <aaron@aaronballman.com> | 2013-11-20 21:41:42 +0000 |
commit | 07e2764ce70e166d05084b7f3a6496000ac5724f (patch) | |
tree | e8b0c7f94e81b70dc5db23969155c6bcae077152 /clang/lib/Sema/SemaDeclAttr.cpp | |
parent | da9c089054f22d164bafb30af4a3ca07a2f890c6 (diff) | |
download | bcm5719-llvm-07e2764ce70e166d05084b7f3a6496000ac5724f.tar.gz bcm5719-llvm-07e2764ce70e166d05084b7f3a6496000ac5724f.zip |
Removed a duplicate diagnostic related to attribute subjects for thread safety annotations, and replaced it with the more general attribute diagnostic. Updated the test case in the one instance where wording changed. No functional change intended.
llvm-svn: 195275
Diffstat (limited to 'clang/lib/Sema/SemaDeclAttr.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDeclAttr.cpp | 50 |
1 files changed, 22 insertions, 28 deletions
diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp index 6f884435d93..6460b040f44 100644 --- a/clang/lib/Sema/SemaDeclAttr.cpp +++ b/clang/lib/Sema/SemaDeclAttr.cpp @@ -535,18 +535,12 @@ static void checkAttrArgsAreLockableObjs(Sema &S, Decl *D, // least add some helper functions to check most argument patterns (# // and types of args). -enum ThreadAttributeDeclKind { - ThreadExpectedFieldOrGlobalVar, - ThreadExpectedFunctionOrMethod, - ThreadExpectedClassOrStruct -}; - static bool checkGuardedVarAttrCommon(Sema &S, Decl *D, const AttributeList &Attr) { // D must be either a member field or global (potentially shared) variable. if (!mayBeSharedVariable(D)) { - S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) - << Attr.getName() << ThreadExpectedFieldOrGlobalVar; + S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) + << Attr.getName() << ExpectedFieldOrGlobalVar; return false; } @@ -580,8 +574,8 @@ static bool checkGuardedByAttrCommon(Sema &S, Decl *D, Expr* &Arg) { // D must be either a member field or global (potentially shared) variable. if (!mayBeSharedVariable(D)) { - S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) - << Attr.getName() << ThreadExpectedFieldOrGlobalVar; + S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) + << Attr.getName() << ExpectedFieldOrGlobalVar; return false; } @@ -622,8 +616,8 @@ static bool checkLockableAttrCommon(Sema &S, Decl *D, const AttributeList &Attr) { // FIXME: Lockable structs for C code. if (!isa<RecordDecl>(D)) { - S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) - << Attr.getName() << ThreadExpectedClassOrStruct; + S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) + << Attr.getName() << ExpectedStructOrUnionOrClass; return false; } @@ -650,8 +644,8 @@ static void handleScopedLockableAttr(Sema &S, Decl *D, static void handleNoThreadSafetyAnalysis(Sema &S, Decl *D, const AttributeList &Attr) { if (!isa<FunctionDecl>(D) && !isa<FunctionTemplateDecl>(D)) { - S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) - << Attr.getName() << ThreadExpectedFunctionOrMethod; + S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) + << Attr.getName() << ExpectedFunctionOrMethod; return; } @@ -705,8 +699,8 @@ static bool checkAcquireOrderAttrCommon(Sema &S, Decl *D, // D must be either a member field or global (potentially shared) variable. ValueDecl *VD = dyn_cast<ValueDecl>(D); if (!VD || !mayBeSharedVariable(D)) { - S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) - << Attr.getName() << ThreadExpectedFieldOrGlobalVar; + S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) + << Attr.getName() << ExpectedFieldOrGlobalVar; return false; } @@ -762,8 +756,8 @@ static bool checkLockFunAttrCommon(Sema &S, Decl *D, // check that the attribute is applied to a function if (!isa<FunctionDecl>(D) && !isa<FunctionTemplateDecl>(D)) { - S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) - << Attr.getName() << ThreadExpectedFunctionOrMethod; + S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) + << Attr.getName() << ExpectedFunctionOrMethod; return false; } @@ -835,8 +829,8 @@ static bool checkTryLockFunAttrCommon(Sema &S, Decl *D, return false; if (!isa<FunctionDecl>(D) && !isa<FunctionTemplateDecl>(D)) { - S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) - << Attr.getName() << ThreadExpectedFunctionOrMethod; + S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) + << Attr.getName() << ExpectedFunctionOrMethod; return false; } @@ -885,8 +879,8 @@ static bool checkLocksRequiredCommon(Sema &S, Decl *D, return false; if (!isa<FunctionDecl>(D) && !isa<FunctionTemplateDecl>(D)) { - S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) - << Attr.getName() << ThreadExpectedFunctionOrMethod; + S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) + << Attr.getName() << ExpectedFunctionOrMethod; return false; } @@ -929,8 +923,8 @@ static void handleUnlockFunAttr(Sema &S, Decl *D, // zero or more arguments ok if (!isa<FunctionDecl>(D) && !isa<FunctionTemplateDecl>(D)) { - S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) - << Attr.getName() << ThreadExpectedFunctionOrMethod; + S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) + << Attr.getName() << ExpectedFunctionOrMethod; return; } @@ -948,8 +942,8 @@ static void handleUnlockFunAttr(Sema &S, Decl *D, static void handleLockReturnedAttr(Sema &S, Decl *D, const AttributeList &Attr) { if (!isa<FunctionDecl>(D) && !isa<FunctionTemplateDecl>(D)) { - S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) - << Attr.getName() << ThreadExpectedFunctionOrMethod; + S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) + << Attr.getName() << ExpectedFunctionOrMethod; return; } @@ -971,8 +965,8 @@ static void handleLocksExcludedAttr(Sema &S, Decl *D, return; if (!isa<FunctionDecl>(D) && !isa<FunctionTemplateDecl>(D)) { - S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) - << Attr.getName() << ThreadExpectedFunctionOrMethod; + S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) + << Attr.getName() << ExpectedFunctionOrMethod; return; } |