aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/CallGraph.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Analysis/CallGraph.cpp')
-rw-r--r--llvm/lib/Analysis/CallGraph.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/Analysis/CallGraph.cpp b/llvm/lib/Analysis/CallGraph.cpp
index d8abccf..0826451 100644
--- a/llvm/lib/Analysis/CallGraph.cpp
+++ b/llvm/lib/Analysis/CallGraph.cpp
@@ -77,9 +77,11 @@ bool CallGraph::invalidate(Module &, const PreservedAnalyses &PA,
void CallGraph::addToCallGraph(Function *F) {
CallGraphNode *Node = getOrInsertFunction(F);
- // If this function has external linkage or has its address taken, anything
- // could call it.
- if (!F->hasLocalLinkage() || F->hasAddressTaken())
+ bool IgnoreCallbackUses = true;
+
+ // If this function has external linkage or has its address taken and
+ // it is not a callback, then anything could call it.
+ if (!F->hasLocalLinkage() || F->hasAddressTaken(nullptr, IgnoreCallbackUses))
ExternalCallingNode->addCalledFunction(nullptr, Node);
populateCallGraphNode(Node);