xref: /aosp_15_r20/external/llvm/test/CodeGen/Generic/badCallArgLRLLVM.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker; This caused a problem because the argument of a call was defined by
4*9880d681SAndroid Build Coastguard Worker; the return value of another call that appears later in the code.
5*9880d681SAndroid Build Coastguard Worker; When processing the first call, the second call has not yet been processed
6*9880d681SAndroid Build Coastguard Worker; so no LiveRange has been created for its return value.
7*9880d681SAndroid Build Coastguard Worker;
8*9880d681SAndroid Build Coastguard Worker; llc dies in UltraSparcRegInfo::suggestRegs4CallArgs() with:
9*9880d681SAndroid Build Coastguard Worker;     ERROR: In call instr, no LR for arg: 0x1009e0740
10*9880d681SAndroid Build Coastguard Worker;
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Workerdeclare i32 @getInt(i32)
13*9880d681SAndroid Build Coastguard Worker
14*9880d681SAndroid Build Coastguard Workerdefine i32 @main(i32 %argc, i8** %argv) {
15*9880d681SAndroid Build Coastguard Workerbb0:
16*9880d681SAndroid Build Coastguard Worker        br label %bb2
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Workerbb1:            ; preds = %bb2
19*9880d681SAndroid Build Coastguard Worker        %reg222 = call i32 @getInt( i32 %reg218 )               ; <i32> [#uses=1]
20*9880d681SAndroid Build Coastguard Worker        %reg110 = add i32 %reg222, 1            ; <i32> [#uses=2]
21*9880d681SAndroid Build Coastguard Worker        %b = icmp sle i32 %reg110, 0            ; <i1> [#uses=1]
22*9880d681SAndroid Build Coastguard Worker        br i1 %b, label %bb2, label %bb3
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Workerbb2:            ; preds = %bb1, %bb0
25*9880d681SAndroid Build Coastguard Worker        %reg218 = call i32 @getInt( i32 %argc )         ; <i32> [#uses=1]
26*9880d681SAndroid Build Coastguard Worker        br label %bb1
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Workerbb3:            ; preds = %bb1
29*9880d681SAndroid Build Coastguard Worker        ret i32 %reg110
30*9880d681SAndroid Build Coastguard Worker}
31*9880d681SAndroid Build Coastguard Worker
32