mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-03 17:32:59 +00:00
[ThinLTO] Remove too aggressive assertion in building function call graph.
The assertion was introduced in r317853 but there are cases when a call isn't handled either as direct or indirect. In this case we add a reference graph edge but not a call graph edge. Reviewers: tejohnson Reviewed By: tejohnson Subscribers: mehdi_amini, inglorion, eraman, hiraditya, efriedma, llvm-commits Differential Revision: https://reviews.llvm.org/D40056 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@318540 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
39107fc224
commit
3c60df7cce
@ -280,8 +280,9 @@ computeFunctionSummary(ModuleSummaryIndex &Index, const Module &M,
|
||||
// Skip inline assembly calls.
|
||||
if (CI && CI->isInlineAsm())
|
||||
continue;
|
||||
assert(CalledValue && !isa<Constant>(CalledValue) &&
|
||||
"Expected indirect call");
|
||||
// Skip direct calls.
|
||||
if (!CalledValue || isa<Constant>(CalledValue))
|
||||
continue;
|
||||
|
||||
uint32_t NumVals, NumCandidates;
|
||||
uint64_t TotalCount;
|
||||
|
@ -5,8 +5,10 @@
|
||||
|
||||
; CHECK: <GLOBALVAL_SUMMARY_BLOCK
|
||||
; CHECK-NEXT: <VERSION
|
||||
; "op7=1" is a call to "callee" function.
|
||||
; CHECK-NEXT: <PERMODULE {{.*}} op7=1 op8=[[ALIASID:[0-9]+]]/>
|
||||
; "op7" is a call to "callee" function.
|
||||
; CHECK-NEXT: <PERMODULE {{.*}} op7=3 op8=[[ALIASID:[0-9]+]]/>
|
||||
; "another_caller" has only references but no calls.
|
||||
; CHECK-NEXT: <PERMODULE {{.*}} op4=3 {{.*}} op7={{[0-9]+}}/>
|
||||
; CHECK-NEXT: <PERMODULE {{.*}} op0=[[ALIASEEID:[0-9]+]]
|
||||
; CHECK-NEXT: <ALIAS {{.*}} op0=[[ALIASID]] {{.*}} op2=[[ALIASEEID]]/>
|
||||
; CHECK-NEXT: </GLOBALVAL_SUMMARY_BLOCK>
|
||||
@ -21,6 +23,12 @@ define void @caller() {
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @another_caller() {
|
||||
; Test calls that aren't handled either as direct or indirect.
|
||||
call void select (i1 icmp eq (i32* @global, i32* null), void ()* @f, void ()* @g)()
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @callee(...)
|
||||
|
||||
@analias = alias void (...), bitcast (void ()* @aliasee to void (...)*)
|
||||
@ -29,3 +37,7 @@ define void @aliasee() {
|
||||
entry:
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @f()
|
||||
declare void @g()
|
||||
@global = extern_weak global i32
|
||||
|
Loading…
Reference in New Issue
Block a user