Don't attempt to simplify an non-affine IV expression if it can't
[oota-llvm.git] / test / Transforms / IndVarSimplify / 2008-11-17-Floating.ll
1 ; RUN: llvm-as < %s | opt -indvars | llvm-dis | grep icmp | count 2
2 ; RUN: llvm-as < %s | opt -indvars | llvm-dis | grep sitofp | count 1
3 ; RUN: llvm-as < %s | opt -indvars | llvm-dis | grep uitofp | count 1
4
5 define void @bar() nounwind {
6 entry:
7         br label %bb
8
9 bb:             ; preds = %bb, %entry
10         %x.0.reg2mem.0 = phi double [ 0.000000e+00, %entry ], [ %1, %bb ]               ; <double> [#uses=2]
11         %0 = tail call i32 @foo(double %x.0.reg2mem.0) nounwind         ; <i32> [#uses=0]
12         %1 = add double %x.0.reg2mem.0, 1.0e+0          ; <double> [#uses=2]
13         %2 = fcmp olt double %1, 2147483646.0e+0                ; <i1> [#uses=1]
14         br i1 %2, label %bb, label %return
15
16 return:         ; preds = %bb
17         ret void
18 }
19
20 define void @bar1() nounwind {
21 entry:
22         br label %bb
23
24 bb:             ; preds = %bb, %entry
25         %x.0.reg2mem.0 = phi double [ 0.000000e+00, %entry ], [ %1, %bb ]               ; <double> [#uses=2]
26         %0 = tail call i32 @foo(double %x.0.reg2mem.0) nounwind         ; <i32> [#uses=0]
27         %1 = add double %x.0.reg2mem.0, 1.0e+0          ; <double> [#uses=2]
28         %2 = fcmp olt double %1, 2147483647.0e+0                ; <i1> [#uses=1]
29         br i1 %2, label %bb, label %return
30
31 return:         ; preds = %bb
32         ret void
33 }
34
35 declare i32 @foo(double)