forked from OSchip/llvm-project
[NFC] CallGraph related cleanup
Summary: Tidy up some CallGraph-related code in preparation for D82572. Reviewers: jdoerfert Reviewed By: jdoerfert Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D82686
This commit is contained in:
parent
a28d38a6bc
commit
1becd298b8
|
@ -412,7 +412,7 @@ public:
|
|||
// graphs by the generic graph algorithms.
|
||||
//
|
||||
|
||||
// Provide graph traits for tranversing call graphs using standard graph
|
||||
// Provide graph traits for traversing call graphs using standard graph
|
||||
// traversals.
|
||||
template <> struct GraphTraits<CallGraphNode *> {
|
||||
using NodeRef = CallGraphNode *;
|
||||
|
|
|
@ -230,17 +230,16 @@ bool CGPassManager::RefreshCallGraph(const CallGraphSCC &CurSCC, CallGraph &CG,
|
|||
// If this call site is null, then the function pass deleted the call
|
||||
// entirely and the WeakTrackingVH nulled it out.
|
||||
auto *Call = dyn_cast_or_null<CallBase>(I->first);
|
||||
if (!I->first ||
|
||||
if (!Call ||
|
||||
// If we've already seen this call site, then the FunctionPass RAUW'd
|
||||
// one call with another, which resulted in two "uses" in the edge
|
||||
// list of the same call.
|
||||
Calls.count(I->first) ||
|
||||
Calls.count(Call) ||
|
||||
|
||||
// If the call edge is not from a call or invoke, or it is a
|
||||
// instrinsic call, then the function pass RAUW'd a call with
|
||||
// another value. This can happen when constant folding happens
|
||||
// of well known functions etc.
|
||||
!Call ||
|
||||
(Call->getCalledFunction() &&
|
||||
Call->getCalledFunction()->isIntrinsic() &&
|
||||
Intrinsic::isLeaf(Call->getCalledFunction()->getIntrinsicID()))) {
|
||||
|
@ -267,14 +266,13 @@ bool CGPassManager::RefreshCallGraph(const CallGraphSCC &CurSCC, CallGraph &CG,
|
|||
continue;
|
||||
}
|
||||
|
||||
assert(!Calls.count(I->first) &&
|
||||
"Call site occurs in node multiple times");
|
||||
assert(!Calls.count(Call) && "Call site occurs in node multiple times");
|
||||
|
||||
if (Call) {
|
||||
Function *Callee = Call->getCalledFunction();
|
||||
// Ignore intrinsics because they're not really function calls.
|
||||
if (!Callee || !(Callee->isIntrinsic()))
|
||||
Calls.insert(std::make_pair(I->first, I->second));
|
||||
Calls.insert(std::make_pair(Call, I->second));
|
||||
}
|
||||
++I;
|
||||
}
|
||||
|
|
|
@ -109,8 +109,7 @@ PreservedAnalyses SyntheticCountsPropagation::run(Module &M,
|
|||
Optional<Scaled64> Res = None;
|
||||
if (!Edge.first)
|
||||
return Res;
|
||||
assert(isa<Instruction>(Edge.first));
|
||||
CallBase &CB = cast<CallBase>(*Edge.first);
|
||||
CallBase &CB = *cast<CallBase>(Edge.first);
|
||||
Function *Caller = CB.getCaller();
|
||||
auto &BFI = FAM.getResult<BlockFrequencyAnalysis>(*Caller);
|
||||
|
||||
|
|
Loading…
Reference in New Issue