mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-09 16:45:03 +00:00
Improve RefreshCallGraph to remove invalid call graph edge.
With commit r219944, InstCombine can now turn a sqrtl into a llvm.fabs.f64. The call graph edge originally representing the call to sqrtl becomes invalid. This patch modifies CGPassManager::RefreshCallGraph() to remove the invalid call graph edge, which can triggers an assert in CallGraphNode::addCalledFunction(). Phabricator Review: http://reviews.llvm.org/D7705 Patch by Lawrence Hu <lawrence@codeaurora.org>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234902 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6f422b364d
commit
2fbccf6972
@ -212,10 +212,13 @@ bool CGPassManager::RefreshCallGraph(CallGraphSCC &CurSCC,
|
||||
// list of the same call.
|
||||
CallSites.count(I->first) ||
|
||||
|
||||
// If the call edge is not from a call or invoke, then the function
|
||||
// pass RAUW'd a call with another value. This can happen when
|
||||
// constant folding happens of well known functions etc.
|
||||
!CallSite(I->first)) {
|
||||
// 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.
|
||||
!CallSite(I->first) ||
|
||||
(CallSite(I->first).getCalledFunction() &&
|
||||
CallSite(I->first).getCalledFunction()->isIntrinsic())) {
|
||||
assert(!CheckingMode &&
|
||||
"CallGraphSCCPass did not update the CallGraph correctly!");
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user