diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/AST/DeclBase.cpp | 7 | ||||
-rw-r--r-- | lib/Sema/SemaDecl.cpp | 4 |
2 files changed, 7 insertions, 4 deletions
diff --git a/lib/AST/DeclBase.cpp b/lib/AST/DeclBase.cpp index b04c149dee..7b20e7751a 100644 --- a/lib/AST/DeclBase.cpp +++ b/lib/AST/DeclBase.cpp @@ -261,6 +261,13 @@ bool Decl::isUsed(bool CheckUsedAttr) const { if (CheckUsedAttr && hasAttr<UsedAttr>()) return true; + // Check redeclarations. We merge attributes, so we don't need to check + // attributes in all redeclarations. + for (redecl_iterator I = redecls_begin(), E = redecls_end(); I != E; ++I) { + if (I->Used) + return true; + } + return false; } diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index e48211032f..629fccc306 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -2388,10 +2388,6 @@ bool Sema::MergeCompatibleFunctionDecls(FunctionDecl *New, FunctionDecl *Old, if (Old->isPure()) New->setPure(); - // Merge "used" flag. - if (Old->isUsed(false)) - New->setUsed(); - // Merge attributes from the parameters. These can mismatch with K&R // declarations. if (New->getNumParams() == Old->getNumParams()) |