forked from OSchip/llvm-project
Make sure we actually found a redeclaration before complaining about attributes added to a redeclaration in C++
llvm-svn: 80403
This commit is contained in:
parent
601d6e4c7b
commit
90820ee62a
|
@ -2736,7 +2736,7 @@ Sema::ActOnFunctionDeclarator(Scope* S, Declarator& D, DeclContext* DC,
|
|||
ProcessDeclAttributes(S, NewFD, D);
|
||||
|
||||
// attributes declared post-definition are currently ignored
|
||||
if (PrevDecl) {
|
||||
if (Redeclaration && PrevDecl) {
|
||||
const FunctionDecl *Def, *PrevFD = dyn_cast<FunctionDecl>(PrevDecl);
|
||||
if (PrevFD && PrevFD->getBody(Def) && D.hasAttributes()) {
|
||||
Diag(NewFD->getLocation(), diag::warn_attribute_precede_definition);
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
// RUN: clang-cc -fsyntax-only -verify %s
|
||||
struct X { };
|
||||
struct Y { };
|
||||
|
||||
bool f0(X) { return true; } // expected-note{{definition}}
|
||||
bool f1(X) { return true; }
|
||||
|
||||
__attribute__ ((__visibility__("hidden"))) bool f0(X); // expected-warning{{attribute}}
|
||||
__attribute__ ((__visibility__("hidden"))) bool f1(Y);
|
Loading…
Reference in New Issue