A loop latch phi node may have uses inside loop, not just in loop header.
[oota-llvm.git] / test / Transforms / IndVarsSimplify / 2006-06-16-Indvar-LCSSA-Crash.ll
1 ; RUN: llvm-upgrade < %s | llvm-as | opt -indvars -disable-output
2
3 void %get_block() {
4 endif.0:                ; preds = %entry
5         br label %no_exit.30
6
7 no_exit.30:             ; preds = %no_exit.30, %endif.0
8         %x.12.0 = phi int [ %inc.28, %no_exit.30 ], [ -2, %endif.0 ]            ; <int> [#uses=1]
9         %tmp.583 = load ushort* null            ; <ushort> [#uses=1]
10         %tmp.584 = cast ushort %tmp.583 to int          ; <int> [#uses=1]
11         %tmp.588 = load int* null               ; <int> [#uses=1]
12         %tmp.589 = mul int %tmp.584, %tmp.588           ; <int> [#uses=1]
13         %tmp.591 = add int %tmp.589, 0          ; <int> [#uses=1]
14         %inc.28 = add int %x.12.0, 1            ; <int> [#uses=2]
15         %tmp.565 = setgt int %inc.28, 3         ; <bool> [#uses=1]
16         br bool %tmp.565, label %loopexit.30, label %no_exit.30
17
18 loopexit.30:            ; preds = %no_exit.30
19         %tmp.591.lcssa = phi int [ %tmp.591, %no_exit.30 ]              ; <int> [#uses=0]
20         ret void
21 }