diff options
author | Ryan Flynn <pizza@parseerror.com> | 2009-07-30 03:15:39 +0000 |
---|---|---|
committer | Ryan Flynn <pizza@parseerror.com> | 2009-07-30 03:15:39 +0000 |
commit | e25ff83fb7eee9eeda89b6f2371bc33a37bf1028 (patch) | |
tree | 2a296454907206ac03076fb3f9d5547e11a259bc /lib/Sema/Sema.cpp | |
parent | 218e0b701cc02b4ca04a601a3836068f96210915 (diff) |
PR3679 - handle #pragma weak
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77573 91177308-0d34-0410-b5e6-96231b3b80d8
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; |