; RUN: llc < %s

; This caused a problem because the argument of a call was defined by
; the return value of another call that appears later in the code.
; When processing the first call, the second call has not yet been processed
; so no LiveRange has been created for its return value.
; 
; llc dies in UltraSparcRegInfo::suggestRegs4CallArgs() with:
;     ERROR: In call instr, no LR for arg: 0x1009e0740 
;

declare i32 @getInt(i32)

define i32 @main(i32 %argc, i8** %argv) {
bb0:
        br label %bb2

bb1:            ; preds = %bb2
        %reg222 = call i32 @getInt( i32 %reg218 )               ; <i32> [#uses=1]
        %reg110 = add i32 %reg222, 1            ; <i32> [#uses=2]
        %b = icmp sle i32 %reg110, 0            ; <i1> [#uses=1]
        br i1 %b, label %bb2, label %bb3

bb2:            ; preds = %bb1, %bb0
        %reg218 = call i32 @getInt( i32 %argc )         ; <i32> [#uses=1]
        br label %bb1

bb3:            ; preds = %bb1
        ret i32 %reg110
}

