From 860507f8380fe704aa512b7221a4b7e2bb925a70 Mon Sep 17 00:00:00 2001 From: James Molloy Date: Tue, 13 Oct 2015 10:43:33 +0000 Subject: [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 --- llvm/lib/Analysis/GlobalsModRef.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'llvm/lib/Analysis/GlobalsModRef.cpp') 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 &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()); -- cgit v1.2.3