another random update
[llvm/avr.git] / test / Transforms / LICM / 2003-02-27-PreheaderProblem.ll
blobb2db1695b5c086c3e570061676cc2c3b35f2c6ab
1 ; Here we have a case where there are two loops and LICM is hoisting an 
2 ; instruction from one loop into the other loop!  This is obviously bad and 
3 ; happens because preheader insertion doesn't insert a preheader for this
4 ; case... bad.
6 ; RUN: opt %s -licm -loop-deletion -simplifycfg -S | \
7 ; RUN:   not grep {br }
9 define i32 @main(i32 %argc) {
10 ; <label>:0
11         br label %bb5
12 bb5:            ; preds = %bb5, %0
13         %I = phi i32 [ 0, %0 ], [ %I2, %bb5 ]           ; <i32> [#uses=1]
14         %I2 = add i32 %I, 1             ; <i32> [#uses=2]
15         %c = icmp eq i32 %I2, 10                ; <i1> [#uses=1]
16         br i1 %c, label %bb5, label %bb8
17 bb8:            ; preds = %bb8, %bb5
18         %cann-indvar = phi i32 [ 0, %bb8 ], [ 0, %bb5 ]         ; <i32> [#uses=0]
19         %X = add i32 %argc, %argc               ; <i32> [#uses=1]
20         br i1 false, label %bb8, label %bb10
21 bb10:           ; preds = %bb8
22         ret i32 %X