Move break-crit-edges before the predicate simplifier. Allows us to
[oota-llvm.git] / test / Transforms / PredicateSimplifier / 2006-09-20-SetCC.ll
1 ; RUN: llvm-as < %s | opt -predsimplify | llvm-dis | grep br | grep return.i.bb8_crit_edge | grep false
2
3 %str = external global [4 x sbyte]              ; <[4 x sbyte]*> [#uses=1]
4
5 implementation   ; Functions:
6
7 declare int %sprintf(sbyte*, sbyte*, ...)
8
9 int %main() {
10 entry:
11         br label %cond_true.outer
12
13 cond_true.outer:                ; preds = %cond_true.i, %entry
14         %i.0.0.ph = phi int [ 0, %entry ], [ %tmp5, %cond_true.i ]              ; <int> [#uses=1]
15         %j.0.0.ph = phi int [ 0, %entry ], [ %tmp312, %cond_true.i ]            ; <int> [#uses=2]
16         br label %cond_true
17
18 cond_true:              ; preds = %return.i, %cond_true.outer
19         %indvar = phi uint [ 0, %cond_true.outer ], [ %indvar.next, %return.i ]         ; <uint> [#uses=2]
20         %indvar = cast uint %indvar to int              ; <int> [#uses=1]
21         %i.0.0 = add int %indvar, %i.0.0.ph             ; <int> [#uses=3]
22         %savedstack = call sbyte* %llvm.stacksave( )            ; <sbyte*> [#uses=2]
23         %tmp.i = seteq int %i.0.0, 0            ; <bool> [#uses=1]
24         %tmp5 = add int %i.0.0, 1               ; <int> [#uses=3]
25         br bool %tmp.i, label %return.i, label %cond_true.i
26
27 cond_true.i:            ; preds = %cond_true
28         %tmp.i = alloca [1000 x sbyte]          ; <[1000 x sbyte]*> [#uses=1]
29         %tmp.sub.i = getelementptr [1000 x sbyte]* %tmp.i, int 0, int 0         ; <sbyte*> [#uses=2]
30         %tmp4.i = call int (sbyte*, sbyte*, ...)* %sprintf( sbyte* %tmp.sub.i, sbyte* getelementptr ([4 x sbyte]* %str, int 0, uint 0), int %i.0.0 )            ; <int> [#uses=0]
31         %tmp.i = load sbyte* %tmp.sub.i         ; <sbyte> [#uses=1]
32         %tmp7.i = cast sbyte %tmp.i to int              ; <int> [#uses=1]
33         call void %llvm.stackrestore( sbyte* %savedstack )
34         %tmp312 = add int %tmp7.i, %j.0.0.ph            ; <int> [#uses=2]
35         %tmp19 = setgt int %tmp5, 9999          ; <bool> [#uses=1]
36         br bool %tmp19, label %bb8, label %cond_true.outer
37
38 return.i:               ; preds = %cond_true
39         call void %llvm.stackrestore( sbyte* %savedstack )
40         %tmp21 = setgt int %tmp5, 9999          ; <bool> [#uses=1]
41         %indvar.next = add uint %indvar, 1              ; <uint> [#uses=1]
42         br bool %tmp21, label %bb8, label %cond_true
43
44 bb8:            ; preds = %return.i, %cond_true.i
45         %j.0.1 = phi int [ %j.0.0.ph, %return.i ], [ %tmp312, %cond_true.i ]            ; <int> [#uses=1]
46         %tmp10 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([4 x sbyte]* %str, int 0, uint 0), int %j.0.1 )         ; <int> [#uses=0]
47         ret int undef
48 }
49
50 declare int %printf(sbyte*, ...)
51
52 declare sbyte* %llvm.stacksave()
53
54 declare void %llvm.stackrestore(sbyte*)