; When constant propogating terminator instructions, the basic block iterator
; was not updated to refer to the final position of the new terminator.  This
; can be bad, f.e. because constproping a terminator can lead to the 
; destruction of PHI nodes, which invalidates the iterator!
;
; Fixed by adding new arguments to ConstantFoldTerminator
;
; RUN: opt < %s -constprop

define void @build_tree(i32 %ml) {
; <label>:0
        br label %bb2

bb2:            ; preds = %bb2, %0
        %reg137 = phi i32 [ %reg140, %bb2 ], [ 12, %0 ]         ; <i32> [#uses=1]
        %reg138 = phi i32 [ %reg139, %bb2 ], [ 0, %0 ]          ; <i32> [#uses=1]
        %reg139 = add i32 %reg138, 1            ; <i32> [#uses=1]
        %reg140 = add i32 %reg137, -1           ; <i32> [#uses=1]
        br i1 false, label %bb2, label %bb3

bb3:            ; preds = %bb2
        ret void
}

