diff options
Diffstat (limited to 'llvm/test/Transforms/SCCP/undef-resolve.ll')
-rw-r--r-- | llvm/test/Transforms/SCCP/undef-resolve.ll | 182 |
1 files changed, 0 insertions, 182 deletions
diff --git a/llvm/test/Transforms/SCCP/undef-resolve.ll b/llvm/test/Transforms/SCCP/undef-resolve.ll deleted file mode 100644 index dd7f1f3dd88..00000000000 --- a/llvm/test/Transforms/SCCP/undef-resolve.ll +++ /dev/null @@ -1,182 +0,0 @@ -; RUN: opt -sccp -S < %s | FileCheck %s - - -; PR6940 -define double @test1() { - %t = sitofp i32 undef to double - ret double %t -; CHECK-LABEL: @test1( -; CHECK: ret double 0.0 -} - - -; rdar://7832370 -; Check that lots of stuff doesn't get turned into undef. -define i32 @test2() nounwind readnone ssp { -; CHECK-LABEL: @test2( -init: - br label %control.outer.outer - -control.outer.loopexit.us-lcssa: ; preds = %control - br label %control.outer.loopexit - -control.outer.loopexit: ; preds = %control.outer.loopexit.us-lcssa.us, %control.outer.loopexit.us-lcssa - br label %control.outer.outer.backedge - -control.outer.outer: ; preds = %control.outer.outer.backedge, %init - %switchCond.0.ph.ph = phi i32 [ 2, %init ], [ 3, %control.outer.outer.backedge ] ; <i32> [#uses=2] - %i.0.ph.ph = phi i32 [ undef, %init ], [ %i.0.ph.ph.be, %control.outer.outer.backedge ] ; <i32> [#uses=1] - %tmp4 = icmp eq i32 %i.0.ph.ph, 0 ; <i1> [#uses=1] - br i1 %tmp4, label %control.outer.outer.split.us, label %control.outer.outer.control.outer.outer.split_crit_edge - -control.outer.outer.control.outer.outer.split_crit_edge: ; preds = %control.outer.outer - br label %control.outer - -control.outer.outer.split.us: ; preds = %control.outer.outer - br label %control.outer.us - -control.outer.us: ; preds = %bb3.us, %control.outer.outer.split.us - %A.0.ph.us = phi i32 [ %switchCond.0.us, %bb3.us ], [ 4, %control.outer.outer.split.us ] ; <i32> [#uses=2] - %switchCond.0.ph.us = phi i32 [ %A.0.ph.us, %bb3.us ], [ %switchCond.0.ph.ph, %control.outer.outer.split.us ] ; <i32> [#uses=1] - br label %control.us - -bb3.us: ; preds = %control.us - br label %control.outer.us - -bb0.us: ; preds = %control.us - br label %control.us - -; CHECK: control.us: ; preds = %bb0.us, %control.outer.us -; CHECK-NEXT: %switchCond.0.us = phi i32 -; CHECK-NEXT: switch i32 %switchCond.0.us -control.us: ; preds = %bb0.us, %control.outer.us - %switchCond.0.us = phi i32 [ %A.0.ph.us, %bb0.us ], [ %switchCond.0.ph.us, %control.outer.us ] ; <i32> [#uses=2] - switch i32 %switchCond.0.us, label %control.outer.loopexit.us-lcssa.us [ - i32 0, label %bb0.us - i32 1, label %bb1.us-lcssa.us - i32 3, label %bb3.us - i32 4, label %bb4.us-lcssa.us - ] - -control.outer.loopexit.us-lcssa.us: ; preds = %control.us - br label %control.outer.loopexit - -bb1.us-lcssa.us: ; preds = %control.us - br label %bb1 - -bb4.us-lcssa.us: ; preds = %control.us - br label %bb4 - -control.outer: ; preds = %bb3, %control.outer.outer.control.outer.outer.split_crit_edge - %A.0.ph = phi i32 [ %nextId17, %bb3 ], [ 4, %control.outer.outer.control.outer.outer.split_crit_edge ] ; <i32> [#uses=1] - %switchCond.0.ph = phi i32 [ 0, %bb3 ], [ %switchCond.0.ph.ph, %control.outer.outer.control.outer.outer.split_crit_edge ] ; <i32> [#uses=1] - br label %control - -control: ; preds = %bb0, %control.outer - %switchCond.0 = phi i32 [ %A.0.ph, %bb0 ], [ %switchCond.0.ph, %control.outer ] ; <i32> [#uses=2] - switch i32 %switchCond.0, label %control.outer.loopexit.us-lcssa [ - i32 0, label %bb0 - i32 1, label %bb1.us-lcssa - i32 3, label %bb3 - i32 4, label %bb4.us-lcssa - ] - -bb4.us-lcssa: ; preds = %control - br label %bb4 - -bb4: ; preds = %bb4.us-lcssa, %bb4.us-lcssa.us - br label %control.outer.outer.backedge - -control.outer.outer.backedge: ; preds = %bb4, %control.outer.loopexit - %i.0.ph.ph.be = phi i32 [ 1, %bb4 ], [ 0, %control.outer.loopexit ] ; <i32> [#uses=1] - br label %control.outer.outer - -bb3: ; preds = %control - %nextId17 = add i32 %switchCond.0, -2 ; <i32> [#uses=1] - br label %control.outer - -bb0: ; preds = %control - br label %control - -bb1.us-lcssa: ; preds = %control - br label %bb1 - -bb1: ; preds = %bb1.us-lcssa, %bb1.us-lcssa.us - ret i32 0 -} - -; Make sure SCCP honors the xor "idiom" -; rdar://9956541 -define i32 @test3() { - %t = xor i32 undef, undef - ret i32 %t -; CHECK-LABEL: @test3( -; CHECK: ret i32 0 -} - -; Be conservative with FP ops -define double @test4(double %x) { - %t = fadd double %x, undef - ret double %t -; CHECK-LABEL: @test4( -; CHECK: fadd double %x, undef -} - -; Make sure casts produce a possible value -define i32 @test5() { - %t = sext i8 undef to i32 - ret i32 %t -; CHECK-LABEL: @test5( -; CHECK: ret i32 0 -} - -; Make sure ashr produces a possible value -define i32 @test6() { - %t = ashr i32 undef, 31 - ret i32 %t -; CHECK-LABEL: @test6( -; CHECK: ret i32 0 -} - -; Make sure lshr produces a possible value -define i32 @test7() { - %t = lshr i32 undef, 31 - ret i32 %t -; CHECK-LABEL: @test7( -; CHECK: ret i32 0 -} - -; icmp eq with undef simplifies to undef -define i1 @test8() { - %t = icmp eq i32 undef, -1 - ret i1 %t -; CHECK-LABEL: @test8( -; CHECK: ret i1 undef -} - -; Make sure we don't conclude that relational comparisons simplify to undef -define i1 @test9() { - %t = icmp ugt i32 undef, -1 - ret i1 %t -; CHECK-LABEL: @test9( -; CHECK: icmp ugt -} - -; Make sure we handle extractvalue -define i64 @test10() { -entry: - %e = extractvalue { i64, i64 } undef, 1 - ret i64 %e -; CHECK-LABEL: @test10( -; CHECK: ret i64 undef -} - -@GV = external global i32 - -define i32 @test11(i1 %tobool) { -entry: - %shr4 = ashr i32 undef, zext (i1 icmp eq (i32* bitcast (i32 (i1)* @test11 to i32*), i32* @GV) to i32) - ret i32 %shr4 -; CHECK-LABEL: @test11( -; CHECK: ret i32 0 -} |