Vikram S. Adve | 0188ce4 | 2002-09-28 16:51:47 +0000 | [diff] [blame] | 1 | ; This caused a problem because the argument of a call was defined by |
| 2 | ; the return value of another call that appears later in the code. |
| 3 | ; When processing the first call, the second call has not yet been processed |
| 4 | ; so no LiveRange has been created for its return value. |
| 5 | ; |
| 6 | ; llc dies in UltraSparcRegInfo::suggestRegs4CallArgs() with: |
| 7 | ; ERROR: In call instr, no LR for arg: 0x1009e0740 |
| 8 | ; |
| 9 | implementation ; Functions: |
| 10 | |
| 11 | declare int %getInt(int); |
| 12 | |
| 13 | int %main(int %argc, sbyte** %argv) { |
| 14 | bb0: ;[#uses=0] |
| 15 | br label %bb2 |
| 16 | |
| 17 | bb1: |
| 18 | %reg222 = call int (int)* %getInt(int %reg218) ;; ARG #1 HAS NO LR |
| 19 | %reg110 = add int %reg222, 1 |
| 20 | %b = setle int %reg110, 0 |
| 21 | br bool %b, label %bb2, label %bb3 |
| 22 | |
| 23 | bb2: |
| 24 | %reg218 = call int (int)* %getInt(int %argc) ;; THIS CALL NOT YET SEEN |
| 25 | br label %bb1 |
| 26 | |
| 27 | bb3: |
| 28 | ret int %reg110 |
| 29 | } |
| 30 | |