diff options
Diffstat (limited to 'llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp')
-rw-r--r-- | llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp b/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp index 91cfc7c14eb..7ab7d805643 100644 --- a/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp +++ b/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp @@ -305,6 +305,13 @@ void BUDataStructures::calculateGraph(DSGraph &Graph) { CalledFuncs.clear(); + // Fast path for noop calls. Note that we don't care about merging globals + // in the callee with nodes in the caller here. + if (CS.getRetVal().isNull() && CS.getNumPtrArgs() == 0) { + TempFCs.erase(TempFCs.begin()); + continue; + } + if (CS.isDirectCall()) { Function *F = CS.getCalleeFunc(); if (isResolvableFunc(F)) |