Tanya Lattner | 53a66d1 | 2008-02-19 01:41:04 +0000 | [diff] [blame^] | 1 | ; RUN: llvm-as < %s | llc |
Tanya Lattner | 2393a24 | 2004-11-06 23:08:26 +0000 | [diff] [blame] | 2 | |
Vikram S. Adve | 0188ce4 | 2002-09-28 16:51:47 +0000 | [diff] [blame] | 3 | ; This caused a problem because the argument of a call was defined by |
| 4 | ; the return value of another call that appears later in the code. |
| 5 | ; When processing the first call, the second call has not yet been processed |
| 6 | ; so no LiveRange has been created for its return value. |
| 7 | ; |
| 8 | ; llc dies in UltraSparcRegInfo::suggestRegs4CallArgs() with: |
| 9 | ; ERROR: In call instr, no LR for arg: 0x1009e0740 |
| 10 | ; |
Vikram S. Adve | 0188ce4 | 2002-09-28 16:51:47 +0000 | [diff] [blame] | 11 | |
Tanya Lattner | 53a66d1 | 2008-02-19 01:41:04 +0000 | [diff] [blame^] | 12 | declare i32 @getInt(i32) |
Vikram S. Adve | 0188ce4 | 2002-09-28 16:51:47 +0000 | [diff] [blame] | 13 | |
Tanya Lattner | 53a66d1 | 2008-02-19 01:41:04 +0000 | [diff] [blame^] | 14 | define i32 @main(i32 %argc, i8** %argv) { |
| 15 | bb0: |
Vikram S. Adve | 0188ce4 | 2002-09-28 16:51:47 +0000 | [diff] [blame] | 16 | br label %bb2 |
| 17 | |
Tanya Lattner | 53a66d1 | 2008-02-19 01:41:04 +0000 | [diff] [blame^] | 18 | bb1: ; preds = %bb2 |
| 19 | %reg222 = call i32 @getInt( i32 %reg218 ) ; <i32> [#uses=1] |
| 20 | %reg110 = add i32 %reg222, 1 ; <i32> [#uses=2] |
| 21 | %b = icmp sle i32 %reg110, 0 ; <i1> [#uses=1] |
| 22 | br i1 %b, label %bb2, label %bb3 |
Vikram S. Adve | 0188ce4 | 2002-09-28 16:51:47 +0000 | [diff] [blame] | 23 | |
Tanya Lattner | 53a66d1 | 2008-02-19 01:41:04 +0000 | [diff] [blame^] | 24 | bb2: ; preds = %bb1, %bb0 |
| 25 | %reg218 = call i32 @getInt( i32 %argc ) ; <i32> [#uses=1] |
| 26 | br label %bb1 |
Vikram S. Adve | 0188ce4 | 2002-09-28 16:51:47 +0000 | [diff] [blame] | 27 | |
Tanya Lattner | 53a66d1 | 2008-02-19 01:41:04 +0000 | [diff] [blame^] | 28 | bb3: ; preds = %bb1 |
| 29 | ret i32 %reg110 |
Vikram S. Adve | 0188ce4 | 2002-09-28 16:51:47 +0000 | [diff] [blame] | 30 | } |
| 31 | |