diff options
Diffstat (limited to 'lib/Sema/Sema.cpp')
-rw-r--r-- | lib/Sema/Sema.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/Sema/Sema.cpp b/lib/Sema/Sema.cpp index 39662511f1..f0aea43047 100644 --- a/lib/Sema/Sema.cpp +++ b/lib/Sema/Sema.cpp @@ -13,6 +13,7 @@ //===----------------------------------------------------------------------===// #include "Sema.h" +#include "llvm/ADT/DenseMap.h" #include "clang/AST/ASTConsumer.h" #include "clang/AST/ASTContext.h" #include "clang/AST/DeclObjC.h" @@ -242,6 +243,15 @@ void Sema::ActOnEndOfTranslationUnit() { // template instantiations earlier. PerformPendingImplicitInstantiations(); + // check for #pragma weak identifiers that were never declared + for (llvm::DenseMap<IdentifierInfo*,WeakInfo>::iterator + I = WeakUndeclaredIdentifiers.begin(), + E = WeakUndeclaredIdentifiers.end(); I != E; ++I) { + if (!I->second.getUsed()) + Diag(I->second.getLocation(), diag::warn_weak_identifier_undeclared) + << I->first; + } + if (!CompleteTranslationUnit) return; |