summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/GlobalsModRef.cpp
diff options
context:
space:
mode:
authorJames Molloy <james.molloy@arm.com>2015-10-13 10:43:33 +0000
committerJames Molloy <james.molloy@arm.com>2015-10-13 10:43:33 +0000
commit860507f8380fe704aa512b7221a4b7e2bb925a70 (patch)
tree4eb8846640a068c88173eec25e514a7c15574600 /llvm/lib/Analysis/GlobalsModRef.cpp
parent71aa9c74a76edb2b874a6aeae288195226b886cb (diff)
downloadbcm5719-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.cpp4
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());
OpenPOWER on IntegriCloud