diff options
author | Sean Silva <chisophugis@gmail.com> | 2016-07-19 23:54:29 +0000 |
---|---|---|
committer | Sean Silva <chisophugis@gmail.com> | 2016-07-19 23:54:29 +0000 |
commit | 554efb28d2a38de0ef9cb64c928c205408bbdecd (patch) | |
tree | e58592db4998970eef26baf3785963ff2d657769 /llvm/test | |
parent | e3c18a5ae8ab0f5c3201b4231445425f2d993f86 (diff) | |
download | bcm5719-llvm-554efb28d2a38de0ef9cb64c928c205408bbdecd.tar.gz bcm5719-llvm-554efb28d2a38de0ef9cb64c928c205408bbdecd.zip |
Revert r275883 and r275891. They seem to cause PR28608.
Revert "[LoopSimplify] Update LCSSA after separating nested loops."
This reverts commit r275891.
Revert "[LCSSA] Post-process PHI-nodes created by SSAUpdate when constructing LCSSA form."
This reverts commit r275883.
llvm-svn: 276064
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/Transforms/LCSSA/pr28424.ll | 87 | ||||
-rw-r--r-- | llvm/test/Transforms/LoopSimplify/pr28272.ll | 76 |
2 files changed, 0 insertions, 163 deletions
diff --git a/llvm/test/Transforms/LCSSA/pr28424.ll b/llvm/test/Transforms/LCSSA/pr28424.ll deleted file mode 100644 index cd7969009fb..00000000000 --- a/llvm/test/Transforms/LCSSA/pr28424.ll +++ /dev/null @@ -1,87 +0,0 @@ -; RUN: opt < %s -lcssa -S -o - | FileCheck %s -target triple = "x86_64-unknown-linux-gnu" - -; PR28424 -; Here LCSSA adds phi-nodes for %x into the loop exits. Then, SSAUpdater needs -; to insert phi-nodes to merge these values. That creates a new def, which in -; its turn needs another LCCSA phi-node, and this test ensures that we insert -; it. - -; CHECK-LABEL: @foo1 -define internal i32 @foo1() { -entry: - br label %header - -header: - %x = add i32 0, 1 - br i1 undef, label %if, label %loopexit1 - -if: - br i1 undef, label %latch, label %loopexit2 - -latch: - br i1 undef, label %header, label %loopexit3 - -; CHECK: loopexit1: -; CHECK: %x.lcssa = phi i32 [ %x, %header ] -loopexit1: - br label %loop_with_insert_point - -; CHECK: loopexit2: -; CHECK: %x.lcssa1 = phi i32 [ %x, %if ] -loopexit2: - br label %exit - -; CHECK: loopexit3: -; CHECK: %x.lcssa2 = phi i32 [ %x, %latch ] -loopexit3: - br label %loop_with_insert_point - -; CHECK: loop_with_insert_point: -; CHECK: %x4 = phi i32 [ %x4, %loop_with_insert_point ], [ %x.lcssa2, %loopexit3 ], [ %x.lcssa, %loopexit1 ] -loop_with_insert_point: - br i1 undef, label %loop_with_insert_point, label %bb - -; CHECK: bb: -; CHECK: %x4.lcssa = phi i32 [ %x4, %loop_with_insert_point ] -bb: - br label %exit - -; CHECK: exit: -; CHECK: %x3 = phi i32 [ %x4.lcssa, %bb ], [ %x.lcssa1, %loopexit2 ] -exit: - ret i32 %x -} - -; CHECK-LABEL: @foo2 -define internal i32 @foo2() { -entry: - br label %header - -header: - %x = add i32 0, 1 - br i1 undef, label %latch, label %loopexit1 - -latch: - br i1 undef, label %header, label %loopexit2 - -; CHECK: loopexit1: -; CHECK: %x.lcssa = phi i32 [ %x, %header ] -loopexit1: - br label %loop_with_insert_point - -; CHECK: loopexit2: -; CHECK: %x.lcssa1 = phi i32 [ %x, %latch ] -loopexit2: - br label %loop_with_insert_point - -; CHECK: loop_with_insert_point: -; CHECK: %x2 = phi i32 [ %x2, %loop_with_insert_point ], [ %x.lcssa1, %loopexit2 ], [ %x.lcssa, %loopexit1 ] -loop_with_insert_point: - br i1 undef, label %loop_with_insert_point, label %exit - -; CHECK: exit: -; CHECK: %x2.lcssa = phi i32 [ %x2, %loop_with_insert_point ] -exit: - ret i32 %x -} diff --git a/llvm/test/Transforms/LoopSimplify/pr28272.ll b/llvm/test/Transforms/LoopSimplify/pr28272.ll deleted file mode 100644 index 49990f92cab..00000000000 --- a/llvm/test/Transforms/LoopSimplify/pr28272.ll +++ /dev/null @@ -1,76 +0,0 @@ -; RUN: opt < %s -lcssa -loop-unroll -S | FileCheck %s -target triple = "x86_64-unknown-linux-gnu" - -; PR28272 -; When LoopSimplify separates nested loops, it might break LCSSA form: values -; from the original loop might be used in the outer loop. This test invokes -; loop-unroll, which calls loop-simplify before itself. If LCSSA is broken -; after loop-simplify, we crash on assertion. - -; CHECK-LABEL: @foo -define void @foo() { -entry: - br label %header - -header: - br label %loop1 - -loop1: - br i1 true, label %loop1, label %bb43 - -bb43: - %a = phi i32 [ undef, %loop1 ], [ 0, %bb45 ], [ %a, %bb54 ] - %b = phi i32 [ 0, %loop1 ], [ 1, %bb54 ], [ %c, %bb45 ] - br i1 true, label %bb114, label %header - -bb114: - %c = add i32 0, 1 - %d = add i32 0, 1 - br i1 true, label %bb45, label %bb54 - -bb45: - %x = add i32 %d, 0 - br label %bb43 - -bb54: - br label %bb43 -} - -; CHECK-LABEL: @foo2 -define void @foo2() { -entry: - br label %outer - -outer.loopexit: - br label %outer - -outer: - br label %loop1 - -loop1: - br i1 true, label %loop1, label %loop2.preheader - -loop2.preheader: - %a.ph = phi i32 [ undef, %loop1 ] - %b.ph = phi i32 [ 0, %loop1 ] - br label %loop2 - -loop2: - %a = phi i32 [ 0, %loop2.if.true ], [ %a, %loop2.if.false ], [ %a.ph, %loop2.preheader ], [0, %bb] - %b = phi i32 [ 1, %loop2.if.false ], [ %c, %loop2.if.true ], [ %b.ph, %loop2.preheader ], [%c, %bb] - br i1 true, label %loop2.if, label %outer.loopexit - -loop2.if: - %c = add i32 0, 1 - switch i32 undef, label %loop2.if.false [i32 0, label %loop2.if.true - i32 1, label %bb] - -loop2.if.true: - br i1 undef, label %loop2, label %bb - -loop2.if.false: - br label %loop2 - -bb: - br label %loop2 -} |