diff options
Diffstat (limited to 'test/Transforms/IndVarSimplify')
-rw-r--r-- | test/Transforms/IndVarSimplify/2008-11-17-Floating.ll | 35 | ||||
-rw-r--r-- | test/Transforms/IndVarSimplify/crash.ll | 19 | ||||
-rw-r--r-- | test/Transforms/IndVarSimplify/dangling-use.ll | 41 | ||||
-rw-r--r-- | test/Transforms/IndVarSimplify/floating-point-iv.ll (renamed from test/Transforms/IndVarSimplify/2008-11-03-Floating.ll) | 49 |
4 files changed, 98 insertions, 46 deletions
diff --git a/test/Transforms/IndVarSimplify/2008-11-17-Floating.ll b/test/Transforms/IndVarSimplify/2008-11-17-Floating.ll deleted file mode 100644 index 311d3da..0000000 --- a/test/Transforms/IndVarSimplify/2008-11-17-Floating.ll +++ /dev/null @@ -1,35 +0,0 @@ -; RUN: opt < %s -indvars -S | grep icmp | count 2 -; RUN: opt < %s -indvars -S | grep sitofp | count 1 -; RUN: opt < %s -indvars -S | grep uitofp | count 1 - -define void @bar() nounwind { -entry: - br label %bb - -bb: ; preds = %bb, %entry - %x.0.reg2mem.0 = phi double [ 0.000000e+00, %entry ], [ %1, %bb ] ; <double> [#uses=2] - %0 = tail call i32 @foo(double %x.0.reg2mem.0) nounwind ; <i32> [#uses=0] - %1 = fadd double %x.0.reg2mem.0, 1.0e+0 ; <double> [#uses=2] - %2 = fcmp olt double %1, 2147483646.0e+0 ; <i1> [#uses=1] - br i1 %2, label %bb, label %return - -return: ; preds = %bb - ret void -} - -define void @bar1() nounwind { -entry: - br label %bb - -bb: ; preds = %bb, %entry - %x.0.reg2mem.0 = phi double [ 0.000000e+00, %entry ], [ %1, %bb ] ; <double> [#uses=2] - %0 = tail call i32 @foo(double %x.0.reg2mem.0) nounwind ; <i32> [#uses=0] - %1 = fadd double %x.0.reg2mem.0, 1.0e+0 ; <double> [#uses=2] - %2 = fcmp olt double %1, 2147483647.0e+0 ; <i1> [#uses=1] - br i1 %2, label %bb, label %return - -return: ; preds = %bb - ret void -} - -declare i32 @foo(double) diff --git a/test/Transforms/IndVarSimplify/crash.ll b/test/Transforms/IndVarSimplify/crash.ll new file mode 100644 index 0000000..14f79fe --- /dev/null +++ b/test/Transforms/IndVarSimplify/crash.ll @@ -0,0 +1,19 @@ +; RUN: opt -indvars %s -disable-output + +declare i32 @putchar(i8) nounwind + +define void @t2(i1* %P) nounwind { +; <label>:0 + br label %1 + +; <label>:1 ; preds = %1, %0 + %2 = phi double [ 9.000000e+00, %0 ], [ %4, %1 ] ; <double> [#uses=1] + %3 = tail call i32 @putchar(i8 72) ; <i32> [#uses=0] + %4 = fadd double %2, -1.000000e+00 ; <double> [#uses=2] + %5 = fcmp ult double %4, 0.000000e+00 ; <i1> [#uses=1] + store i1 %5, i1* %P + br i1 %5, label %6, label %1 + +; <label>:6 ; preds = %1 + ret void +}
\ No newline at end of file diff --git a/test/Transforms/IndVarSimplify/dangling-use.ll b/test/Transforms/IndVarSimplify/dangling-use.ll new file mode 100644 index 0000000..51c3120 --- /dev/null +++ b/test/Transforms/IndVarSimplify/dangling-use.ll @@ -0,0 +1,41 @@ +; RUN: opt -indvars -disable-output < %s + +target datalayout = "E-p:32:32:32-i1:8:8-i8:8:8-i8:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f128:64:128-n32" +target triple = "powerpc-apple-darwin11" + +define void @vec_inverse_5_7_vert_loop_copyseparate(i8* %x, i32 %n, i32 %rowbytes) nounwind { +entry: + %tmp1 = sdiv i32 %n, 3 ; <i32> [#uses=1] + %tmp2 = sdiv i32 %rowbytes, 5 ; <i32> [#uses=2] + br label %bb49 + +bb49: ; preds = %bb48, %entry + %x_addr.0 = phi i8* [ %x, %entry ], [ %tmp481, %bb48 ] ; <i8*> [#uses=2] + br label %bb10 + +bb10: ; preds = %bb49 + %tmp326 = mul nsw i32 %tmp1, %tmp2 ; <i32> [#uses=1] + %tmp351 = getelementptr inbounds i8* %x_addr.0, i32 %tmp326 ; <i8*> [#uses=1] + br i1 false, label %bb.nph, label %bb48 + +bb.nph: ; preds = %bb10 + br label %bb23 + +bb23: ; preds = %bb28, %bb.nph + %pOriginHi.01 = phi i8* [ %tmp351, %bb.nph ], [ %pOriginHi.0, %bb28 ] ; <i8*> [#uses=2] + %tmp378 = bitcast i8* %pOriginHi.01 to i8* ; <i8*> [#uses=1] + store i8* %tmp378, i8** null + %tmp385 = getelementptr inbounds i8* %pOriginHi.01, i32 %tmp2 ; <i8*> [#uses=1] + br label %bb28 + +bb28: ; preds = %bb23 + %pOriginHi.0 = phi i8* [ %tmp385, %bb23 ] ; <i8*> [#uses=1] + br i1 false, label %bb23, label %bb28.bb48_crit_edge + +bb28.bb48_crit_edge: ; preds = %bb28 + br label %bb48 + +bb48: ; preds = %bb28.bb48_crit_edge, %bb10 + %tmp481 = getelementptr inbounds i8* %x_addr.0, i32 1 ; <i8*> [#uses=1] + br label %bb49 +} diff --git a/test/Transforms/IndVarSimplify/2008-11-03-Floating.ll b/test/Transforms/IndVarSimplify/floating-point-iv.ll index 7b4032b..8f4b870 100644 --- a/test/Transforms/IndVarSimplify/2008-11-03-Floating.ll +++ b/test/Transforms/IndVarSimplify/floating-point-iv.ll @@ -1,5 +1,5 @@ -; RUN: opt < %s -indvars -S | grep icmp | count 4 -define void @bar() nounwind { +; RUN: opt < %s -indvars -S | FileCheck %s +define void @test1() nounwind { entry: br label %bb @@ -12,11 +12,13 @@ bb: ; preds = %bb, %entry return: ; preds = %bb ret void +; CHECK: @test1 +; CHECK: icmp } declare i32 @foo(double) -define void @bar2() nounwind { +define void @test2() nounwind { entry: br label %bb @@ -29,25 +31,29 @@ bb: ; preds = %bb, %entry return: ; preds = %bb ret void +; CHECK: @test2 +; CHECK: icmp } -define void @bar3() nounwind { +define void @test3() nounwind { entry: br label %bb bb: ; preds = %bb, %entry - %x.0.reg2mem.0 = phi double [ 0.000000e+00, %entry ], [ %1, %bb ] ; <double> [#uses=2] - %0 = tail call i32 @foo(double %x.0.reg2mem.0) nounwind ; <i32> [#uses=0] - %1 = fadd double %x.0.reg2mem.0, 1.000000e+00 ; <double> [#uses=2] - %2 = fcmp olt double %1, -1.000000e+00 ; <i1> [#uses=1] + %x.0.reg2mem.0 = phi double [ 0.000000e+00, %entry ], [ %1, %bb ] + %0 = tail call i32 @foo(double %x.0.reg2mem.0) nounwind + %1 = fadd double %x.0.reg2mem.0, 1.000000e+00 + %2 = fcmp olt double %1, -1.000000e+00 br i1 %2, label %bb, label %return -return: ; preds = %bb +return: ret void +; CHECK: @test3 +; CHECK: fcmp } -define void @bar4() nounwind { +define void @test4() nounwind { entry: br label %bb @@ -58,8 +64,29 @@ bb: ; preds = %bb, %entry %2 = fcmp olt double %1, 1.000000e+00 ; <i1> [#uses=1] br i1 %2, label %bb, label %return -return: ; preds = %bb +return: ret void +; CHECK: @test4 +; CHECK: fcmp } +; PR6761 +define void @test5() nounwind { +; <label>:0 + br label %1 + +; <label>:1 ; preds = %1, %0 + %2 = phi double [ 9.000000e+00, %0 ], [ %4, %1 ] ; <double> [#uses=1] + %3 = tail call i32 @foo(double 0.0) ; <i32> [#uses=0] + %4 = fadd double %2, -1.000000e+00 ; <double> [#uses=2] + %5 = fcmp ult double %4, 0.000000e+00 ; <i1> [#uses=1] + br i1 %5, label %exit, label %1 + +exit: + ret void + +; CHECK: @test5 +; CHECK: icmp eq i32 {{.*}}, 10 +; CHECK-NEXT: br i1 +} |