diff options
| author | James Molloy <james.molloy@arm.com> | 2015-10-13 10:43:33 +0000 |
|---|---|---|
| committer | James Molloy <james.molloy@arm.com> | 2015-10-13 10:43:33 +0000 |
| commit | 860507f8380fe704aa512b7221a4b7e2bb925a70 (patch) | |
| tree | 4eb8846640a068c88173eec25e514a7c15574600 /llvm/lib/Analysis/GlobalsModRef.cpp | |
| parent | 71aa9c74a76edb2b874a6aeae288195226b886cb (diff) | |
| download | bcm5719-llvm-860507f8380fe704aa512b7221a4b7e2bb925a70.tar.gz bcm5719-llvm-860507f8380fe704aa512b7221a4b7e2bb925a70.zip | |
[GlobalsAA] Don't assume anything about functions that may be overridden
Weak linkage and friends allow a symbol to be overriden outside the
code generator's model, so GlobalsAA shouldn't assume that anything it
can compute about such a symbol is valid.
llvm-svn: 250156
Diffstat (limited to 'llvm/lib/Analysis/GlobalsModRef.cpp')
| -rw-r--r-- | llvm/lib/Analysis/GlobalsModRef.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/Analysis/GlobalsModRef.cpp b/llvm/lib/Analysis/GlobalsModRef.cpp index 40915f45dff..be5d384c435 100644 --- a/llvm/lib/Analysis/GlobalsModRef.cpp +++ b/llvm/lib/Analysis/GlobalsModRef.cpp @@ -480,8 +480,8 @@ void GlobalsAAResult::AnalyzeCallGraph(CallGraph &CG, Module &M) { const std::vector<CallGraphNode *> &SCC = *I; assert(!SCC.empty() && "SCC with no functions?"); - if (!SCC[0]->getFunction()) { - // Calls externally - can't say anything useful. Remove any existing + if (!SCC[0]->getFunction() || SCC[0]->getFunction()->mayBeOverridden()) { + // Calls externally or is weak - can't say anything useful. Remove any existing // function records (may have been created when scanning globals). for (auto *Node : SCC) FunctionInfos.erase(Node->getFunction()); |

