diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2010-08-13 20:13:06 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2010-08-13 20:13:06 +0000 |
commit | 05eac86d547892847ca95b5350e28d681150fa68 (patch) | |
tree | bb2d3d611d5aeb0efc82ca470524fe844aa497d6 /lib/Sema/Sema.cpp | |
parent | 30c0dd86f0dc3c1a1fba29581d04e8ed0bdb659d (diff) |
Revert 111026 & 111027, build breakage.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111036 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/Sema.cpp')
-rw-r--r-- | lib/Sema/Sema.cpp | 62 |
1 files changed, 9 insertions, 53 deletions
diff --git a/lib/Sema/Sema.cpp b/lib/Sema/Sema.cpp index df9bb07cf9..f5c85ad99c 100644 --- a/lib/Sema/Sema.cpp +++ b/lib/Sema/Sema.cpp @@ -235,42 +235,6 @@ void Sema::DeleteExpr(ExprTy *E) { void Sema::DeleteStmt(StmtTy *S) { } -/// \brief Used to prune the decls of Sema's UnusedFileScopedDecls vector. -static bool ShouldRemoveFromUnused(Sema *SemaRef, const DeclaratorDecl *D) { - if (D->isUsed()) - return true; - - if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) { - // UnusedFileScopedDecls stores the first declaration. - // The declaration may have become definition so check again. - const FunctionDecl *DeclToCheck; - if (FD->hasBody(DeclToCheck)) - return !SemaRef->ShouldWarnIfUnusedFileScopedDecl(DeclToCheck); - - // Later redecls may add new information resulting in not having to warn, - // so check again. - DeclToCheck = FD->getMostRecentDeclaration(); - if (DeclToCheck != FD) - return !SemaRef->ShouldWarnIfUnusedFileScopedDecl(DeclToCheck); - } - - if (const VarDecl *VD = dyn_cast<VarDecl>(D)) { - // UnusedFileScopedDecls stores the first declaration. - // The declaration may have become definition so check again. - const VarDecl *DeclToCheck = VD->getDefinition(); - if (DeclToCheck) - return !SemaRef->ShouldWarnIfUnusedFileScopedDecl(DeclToCheck); - - // Later redecls may add new information resulting in not having to warn, - // so check again. - DeclToCheck = VD->getMostRecentDeclaration(); - if (DeclToCheck != VD) - return !SemaRef->ShouldWarnIfUnusedFileScopedDecl(DeclToCheck); - } - - return false; -} - /// ActOnEndOfTranslationUnit - This is called at the very end of the /// translation unit when EOF is reached and all but the top-level scope is /// popped. @@ -299,10 +263,10 @@ void Sema::ActOnEndOfTranslationUnit() { } // Remove file scoped decls that turned out to be used. - UnusedFileScopedDecls.erase(std::remove_if(UnusedFileScopedDecls.begin(), - UnusedFileScopedDecls.end(), - std::bind1st(std::ptr_fun(ShouldRemoveFromUnused), - this)), + UnusedFileScopedDecls.erase(std::remove_if(UnusedFileScopedDecls.begin(), + UnusedFileScopedDecls.end(), + std::bind2nd(std::mem_fun(&DeclaratorDecl::isUsed), + true)), UnusedFileScopedDecls.end()); if (!CompleteTranslationUnit) @@ -370,19 +334,11 @@ void Sema::ActOnEndOfTranslationUnit() { for (std::vector<const DeclaratorDecl*>::iterator I = UnusedFileScopedDecls.begin(), E = UnusedFileScopedDecls.end(); I != E; ++I) { - if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) { - const FunctionDecl *DiagD; - if (!FD->hasBody(DiagD)) - DiagD = FD; - Diag(DiagD->getLocation(), diag::warn_unused_function) - << DiagD->getDeclName(); - } else { - const VarDecl *DiagD = cast<VarDecl>(*I)->getDefinition(); - if (!DiagD) - DiagD = cast<VarDecl>(*I); - Diag(DiagD->getLocation(), diag::warn_unused_variable) - << DiagD->getDeclName(); - } + if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(*I)) + Diag(FD->getLocation(), diag::warn_unused_function) << FD->getDeclName(); + else + Diag((*I)->getLocation(), diag::warn_unused_variable) + << cast<VarDecl>(*I)->getDeclName(); } } |