summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/LoopSimplify
diff options
context:
space:
mode:
authorEric Christopher <echristo@gmail.com>2019-04-17 02:12:23 +0000
committerEric Christopher <echristo@gmail.com>2019-04-17 02:12:23 +0000
commita86343512845c9c1fdbac865fea88aa5fce7142a (patch)
tree666fc6353de19ad8b00e56b67edd33f24104e4a7 /llvm/test/Transforms/LoopSimplify
parent7f8ca6e3679b3af951cb7a4b1377edfaa3244b93 (diff)
downloadbcm5719-llvm-a86343512845c9c1fdbac865fea88aa5fce7142a.tar.gz
bcm5719-llvm-a86343512845c9c1fdbac865fea88aa5fce7142a.zip
Temporarily Revert "Add basic loop fusion pass."
As it's causing some bot failures (and per request from kbarton). This reverts commit r358543/ab70da07286e618016e78247e4a24fcb84077fda. llvm-svn: 358546
Diffstat (limited to 'llvm/test/Transforms/LoopSimplify')
-rw-r--r--llvm/test/Transforms/LoopSimplify/2003-04-25-AssertFail.ll20
-rw-r--r--llvm/test/Transforms/LoopSimplify/2003-05-12-PreheaderExitOfChild.ll42
-rw-r--r--llvm/test/Transforms/LoopSimplify/2003-08-15-PreheadersFail.ll52
-rw-r--r--llvm/test/Transforms/LoopSimplify/2003-12-10-ExitBlocksProblem.ll36
-rw-r--r--llvm/test/Transforms/LoopSimplify/2004-02-05-DominatorInfoCorruption.ll14
-rw-r--r--llvm/test/Transforms/LoopSimplify/2004-03-15-IncorrectDomUpdate.ll11
-rw-r--r--llvm/test/Transforms/LoopSimplify/2004-04-01-IncorrectDomUpdate.ll20
-rw-r--r--llvm/test/Transforms/LoopSimplify/2004-04-12-LoopSimplify-SwitchBackedges.ll18
-rw-r--r--llvm/test/Transforms/LoopSimplify/2004-04-13-LoopSimplifyUpdateDomFrontier.ll18
-rw-r--r--llvm/test/Transforms/LoopSimplify/2007-10-28-InvokeCrash.ll29
-rw-r--r--llvm/test/Transforms/LoopSimplify/2010-07-15-IncorrectDomFrontierUpdate.ll20
-rw-r--r--llvm/test/Transforms/LoopSimplify/2010-12-26-PHIInfiniteLoop.ll43
-rw-r--r--llvm/test/Transforms/LoopSimplify/2011-12-14-LandingpadHeader.ll45
-rw-r--r--llvm/test/Transforms/LoopSimplify/2012-03-20-indirectbr.ll41
-rw-r--r--llvm/test/Transforms/LoopSimplify/ashr-crash.ll80
-rw-r--r--llvm/test/Transforms/LoopSimplify/basictest.ll236
-rw-r--r--llvm/test/Transforms/LoopSimplify/dbg-loc.ll102
-rw-r--r--llvm/test/Transforms/LoopSimplify/dup-preds.ll46
-rw-r--r--llvm/test/Transforms/LoopSimplify/hardertest.ll15
-rw-r--r--llvm/test/Transforms/LoopSimplify/indirectbr-backedge.ll35
-rw-r--r--llvm/test/Transforms/LoopSimplify/indirectbr.ll100
-rw-r--r--llvm/test/Transforms/LoopSimplify/merge-exits.ll48
-rw-r--r--llvm/test/Transforms/LoopSimplify/notify-scev.ll110
-rw-r--r--llvm/test/Transforms/LoopSimplify/phi-node-simplify.ll55
-rw-r--r--llvm/test/Transforms/LoopSimplify/pr26682.ll32
-rw-r--r--llvm/test/Transforms/LoopSimplify/pr28272.ll139
-rw-r--r--llvm/test/Transforms/LoopSimplify/pr30454.ll32
-rw-r--r--llvm/test/Transforms/LoopSimplify/pr33494.ll75
-rw-r--r--llvm/test/Transforms/LoopSimplify/preserve-llvm-loop-metadata.ll70
-rw-r--r--llvm/test/Transforms/LoopSimplify/preserve-scev.ll180
-rw-r--r--llvm/test/Transforms/LoopSimplify/single-backedge.ll44
-rw-r--r--llvm/test/Transforms/LoopSimplify/unreachable-loop-pred.ll69
32 files changed, 0 insertions, 1877 deletions
diff --git a/llvm/test/Transforms/LoopSimplify/2003-04-25-AssertFail.ll b/llvm/test/Transforms/LoopSimplify/2003-04-25-AssertFail.ll
deleted file mode 100644
index 66bf1a0caa9..00000000000
--- a/llvm/test/Transforms/LoopSimplify/2003-04-25-AssertFail.ll
+++ /dev/null
@@ -1,20 +0,0 @@
-; This testcase exposed a problem with the loop identification pass (LoopInfo).
-; Basically, it was incorrectly calculating the loop nesting information.
-;
-; RUN: opt < %s -loop-simplify
-
-define i32 @yylex() {
- br label %loopentry.0
-loopentry.0: ; preds = %else.4, %0
- br label %loopexit.2
-loopexit.2: ; preds = %else.4, %loopexit.2, %loopentry.0
- br i1 false, label %loopexit.2, label %else.4
-yy_find_action: ; preds = %else.4
- br label %else.4
-else.4: ; preds = %yy_find_action, %loopexit.2
- switch i32 0, label %loopexit.2 [
- i32 2, label %yy_find_action
- i32 0, label %loopentry.0
- ]
-}
-
diff --git a/llvm/test/Transforms/LoopSimplify/2003-05-12-PreheaderExitOfChild.ll b/llvm/test/Transforms/LoopSimplify/2003-05-12-PreheaderExitOfChild.ll
deleted file mode 100644
index 2b2afae3661..00000000000
--- a/llvm/test/Transforms/LoopSimplify/2003-05-12-PreheaderExitOfChild.ll
+++ /dev/null
@@ -1,42 +0,0 @@
-; This (complex) testcase causes an assertion failure because a preheader is
-; inserted for the "fail" loop, but the exit block of a loop is not updated
-; to be the preheader instead of the exit loop itself.
-
-; RUN: opt < %s -loop-simplify
-define i32 @re_match_2() {
- br label %loopentry.1
-loopentry.1: ; preds = %endif.82, %0
- br label %shortcirc_done.36
-shortcirc_done.36: ; preds = %loopentry.1
- br i1 false, label %fail, label %endif.40
-endif.40: ; preds = %shortcirc_done.36
- br label %loopexit.20
-loopentry.20: ; preds = %endif.46
- br label %loopexit.20
-loopexit.20: ; preds = %loopentry.20, %endif.40
- br label %loopentry.21
-loopentry.21: ; preds = %no_exit.19, %loopexit.20
- br i1 false, label %no_exit.19, label %loopexit.21
-no_exit.19: ; preds = %loopentry.21
- br i1 false, label %fail, label %loopentry.21
-loopexit.21: ; preds = %loopentry.21
- br label %endif.45
-endif.45: ; preds = %loopexit.21
- br label %cond_true.15
-cond_true.15: ; preds = %endif.45
- br i1 false, label %fail, label %endif.46
-endif.46: ; preds = %cond_true.15
- br label %loopentry.20
-fail: ; preds = %loopexit.37, %cond_true.15, %no_exit.19, %shortcirc_done.36
- br label %then.80
-then.80: ; preds = %fail
- br label %endif.81
-endif.81: ; preds = %then.80
- br label %loopexit.37
-loopexit.37: ; preds = %endif.81
- br i1 false, label %fail, label %endif.82
-endif.82: ; preds = %loopexit.37
- br label %loopentry.1
-}
-
-
diff --git a/llvm/test/Transforms/LoopSimplify/2003-08-15-PreheadersFail.ll b/llvm/test/Transforms/LoopSimplify/2003-08-15-PreheadersFail.ll
deleted file mode 100644
index 4a69067f5f1..00000000000
--- a/llvm/test/Transforms/LoopSimplify/2003-08-15-PreheadersFail.ll
+++ /dev/null
@@ -1,52 +0,0 @@
-; RUN: opt < %s -instcombine -simplifycfg -licm -disable-output
-target datalayout = "e-p:32:32"
-@yy_base = external global [787 x i16] ; <[787 x i16]*> [#uses=1]
-@yy_state_ptr = external global i32* ; <i32**> [#uses=3]
-@yy_state_buf = external global [16386 x i32] ; <[16386 x i32]*> [#uses=1]
-@yy_lp = external global i32 ; <i32*> [#uses=1]
-
-define i32 @_yylex() {
- br label %loopentry.0
-loopentry.0: ; preds = %else.26, %0
- store i32* getelementptr ([16386 x i32], [16386 x i32]* @yy_state_buf, i64 0, i64 0), i32** @yy_state_ptr
- %tmp.35 = load i32*, i32** @yy_state_ptr ; <i32*> [#uses=2]
- %inc.0 = getelementptr i32, i32* %tmp.35, i64 1 ; <i32*> [#uses=1]
- store i32* %inc.0, i32** @yy_state_ptr
- %tmp.36 = load i32, i32* null ; <i32> [#uses=1]
- store i32 %tmp.36, i32* %tmp.35
- br label %loopexit.2
-loopexit.2: ; preds = %else.26, %loopexit.2, %loopentry.0
- store i8* null, i8** null
- %tmp.91 = load i32, i32* null ; <i32> [#uses=1]
- %tmp.92 = sext i32 %tmp.91 to i64 ; <i64> [#uses=1]
- %tmp.93 = getelementptr [787 x i16], [787 x i16]* @yy_base, i64 0, i64 %tmp.92 ; <i16*> [#uses=1]
- %tmp.94 = load i16, i16* %tmp.93 ; <i16> [#uses=1]
- %tmp.95 = icmp ne i16 %tmp.94, 4394 ; <i1> [#uses=1]
- br i1 %tmp.95, label %loopexit.2, label %yy_find_action
-yy_find_action: ; preds = %else.26, %loopexit.2
- br label %loopentry.3
-loopentry.3: ; preds = %then.9, %shortcirc_done.0, %yy_find_action
- %tmp.105 = load i32, i32* @yy_lp ; <i32> [#uses=1]
- %tmp.106 = icmp ne i32 %tmp.105, 0 ; <i1> [#uses=1]
- br i1 %tmp.106, label %shortcirc_next.0, label %shortcirc_done.0
-shortcirc_next.0: ; preds = %loopentry.3
- %tmp.114 = load i16, i16* null ; <i16> [#uses=1]
- %tmp.115 = sext i16 %tmp.114 to i32 ; <i32> [#uses=1]
- %tmp.116 = icmp slt i32 0, %tmp.115 ; <i1> [#uses=1]
- br label %shortcirc_done.0
-shortcirc_done.0: ; preds = %shortcirc_next.0, %loopentry.3
- %shortcirc_val.0 = phi i1 [ false, %loopentry.3 ], [ %tmp.116, %shortcirc_next.0 ] ; <i1> [#uses=1]
- br i1 %shortcirc_val.0, label %else.0, label %loopentry.3
-else.0: ; preds = %shortcirc_done.0
- %tmp.144 = load i32, i32* null ; <i32> [#uses=1]
- %tmp.145 = and i32 %tmp.144, 8192 ; <i32> [#uses=1]
- %tmp.146 = icmp ne i32 %tmp.145, 0 ; <i1> [#uses=1]
- br i1 %tmp.146, label %then.9, label %else.26
-then.9: ; preds = %else.0
- br label %loopentry.3
-else.26: ; preds = %else.0
- switch i32 0, label %loopentry.0 [
- i32 2, label %yy_find_action
- i32 0, label %loopexit.2
- ]
-}
diff --git a/llvm/test/Transforms/LoopSimplify/2003-12-10-ExitBlocksProblem.ll b/llvm/test/Transforms/LoopSimplify/2003-12-10-ExitBlocksProblem.ll
deleted file mode 100644
index 32b632220d3..00000000000
--- a/llvm/test/Transforms/LoopSimplify/2003-12-10-ExitBlocksProblem.ll
+++ /dev/null
@@ -1,36 +0,0 @@
-; LoopSimplify is breaking LICM on this testcase because the exit blocks from
-; the loop are reachable from more than just the exit nodes: the exit blocks
-; have predecessors from outside of the loop!
-;
-; This is distilled from a monsterous crafty example.
-
-; RUN: opt < %s -licm -disable-output
-
-
-@G = weak global i32 0 ; <i32*> [#uses=7]
-
-define i32 @main() {
-entry:
- store i32 123, i32* @G
- br label %loopentry.i
-loopentry.i: ; preds = %endif.1.i, %entry
- %tmp.0.i = load i32, i32* @G ; <i32> [#uses=1]
- %tmp.1.i = icmp eq i32 %tmp.0.i, 123 ; <i1> [#uses=1]
- br i1 %tmp.1.i, label %Out.i, label %endif.0.i
-endif.0.i: ; preds = %loopentry.i
- %tmp.3.i = load i32, i32* @G ; <i32> [#uses=1]
- %tmp.4.i = icmp eq i32 %tmp.3.i, 126 ; <i1> [#uses=1]
- br i1 %tmp.4.i, label %ExitBlock.i, label %endif.1.i
-endif.1.i: ; preds = %endif.0.i
- %tmp.6.i = load i32, i32* @G ; <i32> [#uses=1]
- %inc.i = add i32 %tmp.6.i, 1 ; <i32> [#uses=1]
- store i32 %inc.i, i32* @G
- br label %loopentry.i
-Out.i: ; preds = %loopentry.i
- store i32 0, i32* @G
- br label %ExitBlock.i
-ExitBlock.i: ; preds = %Out.i, %endif.0.i
- %tmp.7.i = load i32, i32* @G ; <i32> [#uses=1]
- ret i32 %tmp.7.i
-}
-
diff --git a/llvm/test/Transforms/LoopSimplify/2004-02-05-DominatorInfoCorruption.ll b/llvm/test/Transforms/LoopSimplify/2004-02-05-DominatorInfoCorruption.ll
deleted file mode 100644
index aae8476c830..00000000000
--- a/llvm/test/Transforms/LoopSimplify/2004-02-05-DominatorInfoCorruption.ll
+++ /dev/null
@@ -1,14 +0,0 @@
-; RUN: opt < %s -loop-simplify -verify -licm -disable-output
-
-define void @.subst_48() {
-entry:
- br label %loopentry.0
-loopentry.0: ; preds = %loopentry.0, %entry
- br i1 false, label %loopentry.0, label %loopentry.2
-loopentry.2: ; preds = %loopentry.2, %loopentry.0
- %tmp.968 = icmp sle i32 0, 3 ; <i1> [#uses=1]
- br i1 %tmp.968, label %loopentry.2, label %UnifiedReturnBlock
-UnifiedReturnBlock: ; preds = %loopentry.2
- ret void
-}
-
diff --git a/llvm/test/Transforms/LoopSimplify/2004-03-15-IncorrectDomUpdate.ll b/llvm/test/Transforms/LoopSimplify/2004-03-15-IncorrectDomUpdate.ll
deleted file mode 100644
index 3e7661ecb57..00000000000
--- a/llvm/test/Transforms/LoopSimplify/2004-03-15-IncorrectDomUpdate.ll
+++ /dev/null
@@ -1,11 +0,0 @@
-; RUN: opt < %s -loop-simplify -licm -disable-output
-define void @main() {
-entry:
- br i1 false, label %Out, label %loop
-loop: ; preds = %loop, %entry
- %LI = icmp sgt i32 0, 0 ; <i1> [#uses=1]
- br i1 %LI, label %loop, label %Out
-Out: ; preds = %loop, %entry
- ret void
-}
-
diff --git a/llvm/test/Transforms/LoopSimplify/2004-04-01-IncorrectDomUpdate.ll b/llvm/test/Transforms/LoopSimplify/2004-04-01-IncorrectDomUpdate.ll
deleted file mode 100644
index c29383764af..00000000000
--- a/llvm/test/Transforms/LoopSimplify/2004-04-01-IncorrectDomUpdate.ll
+++ /dev/null
@@ -1,20 +0,0 @@
-; RUN: opt < %s -loop-simplify -licm -disable-output
-
-; This is PR306
-
-define void @NormalizeCoeffsVecFFE() {
-entry:
- br label %loopentry.0
-loopentry.0: ; preds = %no_exit.0, %entry
- br i1 false, label %loopentry.1, label %no_exit.0
-no_exit.0: ; preds = %loopentry.0
- br i1 false, label %loopentry.0, label %loopentry.1
-loopentry.1: ; preds = %no_exit.1, %no_exit.0, %loopentry.0
- br i1 false, label %no_exit.1, label %loopexit.1
-no_exit.1: ; preds = %loopentry.1
- %tmp.43 = icmp eq i16 0, 0 ; <i1> [#uses=1]
- br i1 %tmp.43, label %loopentry.1, label %loopexit.1
-loopexit.1: ; preds = %no_exit.1, %loopentry.1
- ret void
-}
-
diff --git a/llvm/test/Transforms/LoopSimplify/2004-04-12-LoopSimplify-SwitchBackedges.ll b/llvm/test/Transforms/LoopSimplify/2004-04-12-LoopSimplify-SwitchBackedges.ll
deleted file mode 100644
index c522ec9463b..00000000000
--- a/llvm/test/Transforms/LoopSimplify/2004-04-12-LoopSimplify-SwitchBackedges.ll
+++ /dev/null
@@ -1,18 +0,0 @@
-; RUN: opt < %s -loop-simplify -disable-output
-
-define void @test() {
-loopentry.0:
- br label %loopentry.1
-loopentry.1: ; preds = %then.6, %then.6, %loopentry.1, %loopentry.0
- %pixel.4 = phi i32 [ 0, %loopentry.0 ], [ %pixel.4, %loopentry.1 ], [ %tmp.370, %then.6 ], [ %tmp.370, %then.6 ] ; <i32> [#uses=1]
- br i1 false, label %then.6, label %loopentry.1
-then.6: ; preds = %loopentry.1
- %tmp.370 = add i32 0, 0 ; <i32> [#uses=2]
- switch i32 0, label %label.7 [
- i32 6408, label %loopentry.1
- i32 32841, label %loopentry.1
- ]
-label.7: ; preds = %then.6
- ret void
-}
-
diff --git a/llvm/test/Transforms/LoopSimplify/2004-04-13-LoopSimplifyUpdateDomFrontier.ll b/llvm/test/Transforms/LoopSimplify/2004-04-13-LoopSimplifyUpdateDomFrontier.ll
deleted file mode 100644
index df7034baf66..00000000000
--- a/llvm/test/Transforms/LoopSimplify/2004-04-13-LoopSimplifyUpdateDomFrontier.ll
+++ /dev/null
@@ -1,18 +0,0 @@
-; RUN: opt < %s -sroa -loop-simplify -licm -disable-output -verify-dom-info -verify-loop-info
-
-define void @inflate() {
-entry:
- br label %loopentry.0.outer1111
-loopentry.0.outer1111: ; preds = %then.41, %label.11, %loopentry.0.outer1111, %entry
- %left.0.ph1107 = phi i32 [ %tmp.1172, %then.41 ], [ 0, %entry ], [ %tmp.1172, %label.11 ], [ %left.0.ph1107, %loopentry.0.outer1111 ] ; <i32> [#uses=2]
- %tmp.1172 = sub i32 %left.0.ph1107, 0 ; <i32> [#uses=2]
- switch i32 0, label %label.11 [
- i32 23, label %loopentry.0.outer1111
- i32 13, label %then.41
- ]
-label.11: ; preds = %loopentry.0.outer1111
- br label %loopentry.0.outer1111
-then.41: ; preds = %loopentry.0.outer1111
- br label %loopentry.0.outer1111
-}
-
diff --git a/llvm/test/Transforms/LoopSimplify/2007-10-28-InvokeCrash.ll b/llvm/test/Transforms/LoopSimplify/2007-10-28-InvokeCrash.ll
deleted file mode 100644
index 9f65d68202f..00000000000
--- a/llvm/test/Transforms/LoopSimplify/2007-10-28-InvokeCrash.ll
+++ /dev/null
@@ -1,29 +0,0 @@
-; RUN: opt < %s -loop-simplify -disable-output
-; PR1752
-target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-s0:0:64-f80:32:32"
-target triple = "i686-pc-mingw32"
-
-define void @func() personality i32 (...)* @__gxx_personality_v0 {
-bb_init:
- br label %bb_main
-
-bb_main:
- br label %invcont17.normaldest
-
-invcont17.normaldest917: ; No predecessors!
- %tmp23 = invoke i32 @foo()
- to label %invcont17.normaldest unwind label %invcont17.normaldest.normaldest
-
-invcont17.normaldest: ; preds = %invcont17.normaldest917, %bb_main
- br label %bb_main
-
-invcont17.normaldest.normaldest: ; No predecessors!
- %exn = landingpad {i8*, i32}
- catch i8* null
- store i32 %tmp23, i32* undef
- br label %bb_main
-}
-
-declare i32 @foo()
-
-declare i32 @__gxx_personality_v0(...)
diff --git a/llvm/test/Transforms/LoopSimplify/2010-07-15-IncorrectDomFrontierUpdate.ll b/llvm/test/Transforms/LoopSimplify/2010-07-15-IncorrectDomFrontierUpdate.ll
deleted file mode 100644
index f179da234cb..00000000000
--- a/llvm/test/Transforms/LoopSimplify/2010-07-15-IncorrectDomFrontierUpdate.ll
+++ /dev/null
@@ -1,20 +0,0 @@
-; RUN: opt < %s -domfrontier -loop-simplify -domfrontier -verify-dom-info -analyze
-
-
-define void @a() nounwind {
-entry:
- br i1 undef, label %bb37, label %bb1.i
-
-bb1.i: ; preds = %bb1.i, %bb
- %indvar = phi i64 [ %indvar.next, %bb1.i ], [ 0, %entry ] ; <i64> [#uses=1]
- %indvar.next = add i64 %indvar, 1 ; <i64> [#uses=2]
- %exitcond = icmp eq i64 %indvar.next, 576 ; <i1> [#uses=1]
- br i1 %exitcond, label %bb37, label %bb1.i
-
-bb37: ; preds = %bb1.i, %bb
- br label %return
-
-
-return: ; preds = %bb39
- ret void
-}
diff --git a/llvm/test/Transforms/LoopSimplify/2010-12-26-PHIInfiniteLoop.ll b/llvm/test/Transforms/LoopSimplify/2010-12-26-PHIInfiniteLoop.ll
deleted file mode 100644
index 00f520bf797..00000000000
--- a/llvm/test/Transforms/LoopSimplify/2010-12-26-PHIInfiniteLoop.ll
+++ /dev/null
@@ -1,43 +0,0 @@
-; RUN: opt < %s -loop-simplify -S
-; PR8702
-target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
-target triple = "x86_64-unknown-freebsd9.0"
-
-declare void @foo(i32 %x)
-
-define fastcc void @inm_merge() nounwind {
-entry:
- br label %for.cond
-
-for.cond: ; preds = %while.cond36.i, %entry
- br i1 undef, label %do.body, label %for.body
-
-for.body: ; preds = %for.cond
- br i1 undef, label %while.cond36.i, label %if.end44
-
-if.end44: ; preds = %for.body
- %call49 = call fastcc i32 @inm_get_source()
- br i1 undef, label %if.end54, label %for.cond64
-
-if.end54: ; preds = %if.end44
- br label %while.cond36.i
-
-while.cond36.i: ; preds = %if.end54, %for.body
- br label %for.cond
-
-for.cond64: ; preds = %if.end88, %for.cond64, %if.end44
- %error.161 = phi i32 [ %error.161, %for.cond64 ], [ %error.161, %if.end88 ], [ %call49, %if.end44 ]
- call void @foo(i32 %error.161)
- br i1 undef, label %for.cond64, label %if.end88
-
-if.end88: ; preds = %for.cond64
- br i1 undef, label %for.cond64, label %if.end98
-
-if.end98: ; preds = %if.end88
- unreachable
-
-do.body: ; preds = %for.cond
- unreachable
-}
-
-declare fastcc i32 @inm_get_source() nounwind
diff --git a/llvm/test/Transforms/LoopSimplify/2011-12-14-LandingpadHeader.ll b/llvm/test/Transforms/LoopSimplify/2011-12-14-LandingpadHeader.ll
deleted file mode 100644
index cb9dd4124e2..00000000000
--- a/llvm/test/Transforms/LoopSimplify/2011-12-14-LandingpadHeader.ll
+++ /dev/null
@@ -1,45 +0,0 @@
-; RUN: opt < %s -loop-simplify -S | FileCheck %s
-; PR11575
-
-@catchtypeinfo = external unnamed_addr constant { i8*, i8*, i8* }
-
-define void @main() uwtable ssp personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
-entry:
- invoke void @f1()
- to label %try.cont19 unwind label %catch
-
-; CHECK: catch.preheader:
-; CHECK-NEXT: landingpad
-; CHECK: br label %catch
-
-; CHECK: catch.preheader.split-lp:
-; CHECK-NEXT: landingpad
-; CHECK: br label %catch
-
-catch: ; preds = %if.else, %entry
- %0 = landingpad { i8*, i32 }
- catch i8* bitcast ({ i8*, i8*, i8* }* @catchtypeinfo to i8*)
- invoke void @f3()
- to label %if.else unwind label %eh.resume
-
-if.else: ; preds = %catch
- invoke void @f2()
- to label %try.cont19 unwind label %catch
-
-try.cont19: ; preds = %if.else, %entry
- ret void
-
-eh.resume: ; preds = %catch
- %1 = landingpad { i8*, i32 }
- cleanup
- catch i8* bitcast ({ i8*, i8*, i8* }* @catchtypeinfo to i8*)
- resume { i8*, i32 } undef
-}
-
-declare i32 @__gxx_personality_v0(...)
-
-declare void @f1()
-
-declare void @f2()
-
-declare void @f3()
diff --git a/llvm/test/Transforms/LoopSimplify/2012-03-20-indirectbr.ll b/llvm/test/Transforms/LoopSimplify/2012-03-20-indirectbr.ll
deleted file mode 100644
index 9c805da485d..00000000000
--- a/llvm/test/Transforms/LoopSimplify/2012-03-20-indirectbr.ll
+++ /dev/null
@@ -1,41 +0,0 @@
-; RUN: opt < %s -loop-simplify -S | FileCheck %s
-
-; Make sure the preheader exists.
-; CHECK: sw.bb103:
-; CHECK: indirectbr {{.*}}label %while.cond112
-; CHECK: while.cond112:
-; But the tail is not split.
-; CHECK: for.body:
-; CHECK: indirectbr {{.*}}label %while.cond112
-define fastcc void @build_regex_nfa() nounwind uwtable ssp {
-entry:
- indirectbr i8* blockaddress(@build_regex_nfa, %while.cond), [label %while.cond]
-
-while.cond: ; preds = %if.then439, %entry
- indirectbr i8* blockaddress(@build_regex_nfa, %sw.bb103), [label %do.body785, label %sw.bb103]
-
-sw.bb103: ; preds = %while.body
- indirectbr i8* blockaddress(@build_regex_nfa, %while.cond112), [label %while.cond112]
-
-while.cond112: ; preds = %for.body, %for.cond.preheader, %sw.bb103
- %pc.0 = phi i8 [ -1, %sw.bb103 ], [ 0, %for.body ], [ %pc.0, %for.cond.preheader ]
- indirectbr i8* blockaddress(@build_regex_nfa, %Lsetdone), [label %sw.bb118, label %Lsetdone]
-
-sw.bb118: ; preds = %while.cond112
- indirectbr i8* blockaddress(@build_regex_nfa, %for.cond.preheader), [label %Lerror.loopexit, label %for.cond.preheader]
-
-for.cond.preheader: ; preds = %sw.bb118
- indirectbr i8* blockaddress(@build_regex_nfa, %for.body), [label %while.cond112, label %for.body]
-
-for.body: ; preds = %for.body, %for.cond.preheader
- indirectbr i8* blockaddress(@build_regex_nfa, %for.body), [label %while.cond112, label %for.body]
-
-Lsetdone: ; preds = %while.cond112
- unreachable
-
-do.body785: ; preds = %while.cond, %while.body
- ret void
-
-Lerror.loopexit: ; preds = %sw.bb118
- unreachable
-}
diff --git a/llvm/test/Transforms/LoopSimplify/ashr-crash.ll b/llvm/test/Transforms/LoopSimplify/ashr-crash.ll
deleted file mode 100644
index b5cc1449cec..00000000000
--- a/llvm/test/Transforms/LoopSimplify/ashr-crash.ll
+++ /dev/null
@@ -1,80 +0,0 @@
-; RUN: opt -basicaa -loop-rotate -licm -instcombine -indvars -loop-unroll -S %s | FileCheck %s
-;
-; PR18361: ScalarEvolution::getAddRecExpr():
-; Assertion `isLoopInvariant(Operands[i],...
-;
-; After a series of loop optimizations, SCEV's LoopDispositions grow stale.
-; In particular, LoopSimplify hoists %cmp4, resulting in this SCEV for %add:
-; {(zext i1 %cmp4 to i32),+,1}<nw><%for.cond1.preheader>
-;
-; When recomputing the SCEV for %ashr, we truncate the operands to get:
-; (zext i1 %cmp4 to i16)
-;
-; This SCEV was never mapped to a value so never invalidated. It's
-; loop disposition is still marked as non-loop-invariant, which is
-; inconsistent with the AddRec.
-
-target datalayout = "e-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-apple-macosx"
-
-@d = common global i32 0, align 4
-@a = common global i32 0, align 4
-@c = common global i32 0, align 4
-@b = common global i32 0, align 4
-
-; Check that the def-use chain that leads to the bad SCEV is still
-; there.
-;
-; CHECK-LABEL: @foo
-; CHECK-LABEL: entry:
-; CHECK-LABEL: for.cond1.preheader:
-; CHECK-LABEL: for.body3:
-; CHECK: %cmp4.le.le
-; CHECK: %conv.le.le = zext i1 %cmp4.le.le to i32
-; CHECK: %xor.le.le = xor i32 %conv6.le.le, 1
-define void @foo() {
-entry:
- br label %for.cond
-
-for.cond: ; preds = %for.inc7, %entry
- %storemerge = phi i32 [ 0, %entry ], [ %inc8, %for.inc7 ]
- %f.0 = phi i32 [ undef, %entry ], [ %f.1, %for.inc7 ]
- store i32 %storemerge, i32* @d, align 4
- %cmp = icmp slt i32 %storemerge, 1
- br i1 %cmp, label %for.cond1, label %for.end9
-
-for.cond1: ; preds = %for.cond, %for.body3
- %storemerge1 = phi i32 [ %inc, %for.body3 ], [ 0, %for.cond ]
- %f.1 = phi i32 [ %xor, %for.body3 ], [ %f.0, %for.cond ]
- store i32 %storemerge1, i32* @a, align 4
- %cmp2 = icmp slt i32 %storemerge1, 1
- br i1 %cmp2, label %for.body3, label %for.inc7
-
-for.body3: ; preds = %for.cond1
- %0 = load i32, i32* @c, align 4
- %cmp4 = icmp sge i32 %storemerge1, %0
- %conv = zext i1 %cmp4 to i32
- %1 = load i32, i32* @d, align 4
- %add = add nsw i32 %conv, %1
- %sext = shl i32 %add, 16
- %conv6 = ashr exact i32 %sext, 16
- %xor = xor i32 %conv6, 1
- %inc = add nsw i32 %storemerge1, 1
- br label %for.cond1
-
-for.inc7: ; preds = %for.cond1
- %2 = load i32, i32* @d, align 4
- %inc8 = add nsw i32 %2, 1
- br label %for.cond
-
-for.end9: ; preds = %for.cond
- %cmp10 = icmp sgt i32 %f.0, 0
- br i1 %cmp10, label %if.then, label %if.end
-
-if.then: ; preds = %for.end9
- store i32 0, i32* @b, align 4
- br label %if.end
-
-if.end: ; preds = %if.then, %for.end9
- ret void
-}
diff --git a/llvm/test/Transforms/LoopSimplify/basictest.ll b/llvm/test/Transforms/LoopSimplify/basictest.ll
deleted file mode 100644
index e5fb7b9907b..00000000000
--- a/llvm/test/Transforms/LoopSimplify/basictest.ll
+++ /dev/null
@@ -1,236 +0,0 @@
-; RUN: opt < %s -S -loop-simplify | FileCheck %s
-; RUN: opt < %s -S -passes=loop-simplify | FileCheck %s
-
-; This function should get a preheader inserted before bb3, that is jumped
-; to by bb1 & bb2
-define void @test() {
-; CHECK-LABEL: define void @test(
-entry:
- br i1 true, label %bb1, label %bb2
-
-bb1:
- br label %bb3
-; CHECK: bb1:
-; CHECK-NEXT: br label %[[PH:.*]]
-
-bb2:
- br label %bb3
-; CHECK: bb2:
-; CHECK-NEXT: br label %[[PH]]
-
-bb3:
- br label %bb3
-; CHECK: [[PH]]:
-; CHECK-NEXT: br label %bb3
-;
-; CHECK: bb3:
-; CHECK-NEXT: br label %bb3
-}
-
-; Test a case where we have multiple exit blocks as successors of a single loop
-; block that need to be made dedicated exit blocks. We also have multiple
-; exiting edges to one of the exit blocks that all should be rewritten.
-define void @test_multiple_exits_from_single_block(i8 %a, i8* %b.ptr) {
-; CHECK-LABEL: define void @test_multiple_exits_from_single_block(
-entry:
- switch i8 %a, label %loop [
- i8 0, label %exit.a
- i8 1, label %exit.b
- ]
-; CHECK: entry:
-; CHECK-NEXT: switch i8 %a, label %[[PH:.*]] [
-; CHECK-NEXT: i8 0, label %exit.a
-; CHECK-NEXT: i8 1, label %exit.b
-; CHECK-NEXT: ]
-
-loop:
- %b = load volatile i8, i8* %b.ptr
- switch i8 %b, label %loop [
- i8 0, label %exit.a
- i8 1, label %exit.b
- i8 2, label %loop
- i8 3, label %exit.a
- i8 4, label %loop
- i8 5, label %exit.a
- i8 6, label %loop
- ]
-; CHECK: [[PH]]:
-; CHECK-NEXT: br label %loop
-;
-; CHECK: loop:
-; CHECK-NEXT: %[[B:.*]] = load volatile i8, i8* %b.ptr
-; CHECK-NEXT: switch i8 %[[B]], label %[[BACKEDGE:.*]] [
-; CHECK-NEXT: i8 0, label %[[LOOPEXIT_A:.*]]
-; CHECK-NEXT: i8 1, label %[[LOOPEXIT_B:.*]]
-; CHECK-NEXT: i8 2, label %[[BACKEDGE]]
-; CHECK-NEXT: i8 3, label %[[LOOPEXIT_A]]
-; CHECK-NEXT: i8 4, label %[[BACKEDGE]]
-; CHECK-NEXT: i8 5, label %[[LOOPEXIT_A]]
-; CHECK-NEXT: i8 6, label %[[BACKEDGE]]
-; CHECK-NEXT: ]
-;
-; CHECK: [[BACKEDGE]]:
-; CHECK-NEXT: br label %loop
-
-exit.a:
- ret void
-; CHECK: [[LOOPEXIT_A]]:
-; CHECK-NEXT: br label %exit.a
-;
-; CHECK: exit.a:
-; CHECK-NEXT: ret void
-
-exit.b:
- ret void
-; CHECK: [[LOOPEXIT_B]]:
-; CHECK-NEXT: br label %exit.b
-;
-; CHECK: exit.b:
-; CHECK-NEXT: ret void
-}
-
-; Check that we leave already dedicated exits alone when forming dedicated exit
-; blocks.
-define void @test_pre_existing_dedicated_exits(i1 %a, i1* %ptr) {
-; CHECK-LABEL: define void @test_pre_existing_dedicated_exits(
-entry:
- br i1 %a, label %loop.ph, label %non_dedicated_exit
-; CHECK: entry:
-; CHECK-NEXT: br i1 %a, label %loop.ph, label %non_dedicated_exit
-
-loop.ph:
- br label %loop.header
-; CHECK: loop.ph:
-; CHECK-NEXT: br label %loop.header
-
-loop.header:
- %c1 = load volatile i1, i1* %ptr
- br i1 %c1, label %loop.body1, label %dedicated_exit1
-; CHECK: loop.header:
-; CHECK-NEXT: %[[C1:.*]] = load volatile i1, i1* %ptr
-; CHECK-NEXT: br i1 %[[C1]], label %loop.body1, label %dedicated_exit1
-
-loop.body1:
- %c2 = load volatile i1, i1* %ptr
- br i1 %c2, label %loop.body2, label %non_dedicated_exit
-; CHECK: loop.body1:
-; CHECK-NEXT: %[[C2:.*]] = load volatile i1, i1* %ptr
-; CHECK-NEXT: br i1 %[[C2]], label %loop.body2, label %[[LOOPEXIT:.*]]
-
-loop.body2:
- %c3 = load volatile i1, i1* %ptr
- br i1 %c3, label %loop.backedge, label %dedicated_exit2
-; CHECK: loop.body2:
-; CHECK-NEXT: %[[C3:.*]] = load volatile i1, i1* %ptr
-; CHECK-NEXT: br i1 %[[C3]], label %loop.backedge, label %dedicated_exit2
-
-loop.backedge:
- br label %loop.header
-; CHECK: loop.backedge:
-; CHECK-NEXT: br label %loop.header
-
-dedicated_exit1:
- ret void
-; Check that there isn't a split loop exit.
-; CHECK-NOT: br label %dedicated_exit1
-;
-; CHECK: dedicated_exit1:
-; CHECK-NEXT: ret void
-
-dedicated_exit2:
- ret void
-; Check that there isn't a split loop exit.
-; CHECK-NOT: br label %dedicated_exit2
-;
-; CHECK: dedicated_exit2:
-; CHECK-NEXT: ret void
-
-non_dedicated_exit:
- ret void
-; CHECK: [[LOOPEXIT]]:
-; CHECK-NEXT: br label %non_dedicated_exit
-;
-; CHECK: non_dedicated_exit:
-; CHECK-NEXT: ret void
-}
-
-; Check that we form what dedicated exits we can even when some exits are
-; reached via indirectbr which precludes forming dedicated exits.
-define void @test_form_some_dedicated_exits_despite_indirectbr(i8 %a, i8* %ptr, i8** %addr.ptr) {
-; CHECK-LABEL: define void @test_form_some_dedicated_exits_despite_indirectbr(
-entry:
- switch i8 %a, label %loop.ph [
- i8 0, label %exit.a
- i8 1, label %exit.b
- i8 2, label %exit.c
- ]
-; CHECK: entry:
-; CHECK-NEXT: switch i8 %a, label %loop.ph [
-; CHECK-NEXT: i8 0, label %exit.a
-; CHECK-NEXT: i8 1, label %exit.b
-; CHECK-NEXT: i8 2, label %exit.c
-; CHECK-NEXT: ]
-
-loop.ph:
- br label %loop.header
-; CHECK: loop.ph:
-; CHECK-NEXT: br label %loop.header
-
-loop.header:
- %addr1 = load volatile i8*, i8** %addr.ptr
- indirectbr i8* %addr1, [label %loop.body1, label %exit.a]
-; CHECK: loop.header:
-; CHECK-NEXT: %[[ADDR1:.*]] = load volatile i8*, i8** %addr.ptr
-; CHECK-NEXT: indirectbr i8* %[[ADDR1]], [label %loop.body1, label %exit.a]
-
-loop.body1:
- %b = load volatile i8, i8* %ptr
- switch i8 %b, label %loop.body2 [
- i8 0, label %exit.a
- i8 1, label %exit.b
- i8 2, label %exit.c
- ]
-; CHECK: loop.body1:
-; CHECK-NEXT: %[[B:.*]] = load volatile i8, i8* %ptr
-; CHECK-NEXT: switch i8 %[[B]], label %loop.body2 [
-; CHECK-NEXT: i8 0, label %exit.a
-; CHECK-NEXT: i8 1, label %[[LOOPEXIT:.*]]
-; CHECK-NEXT: i8 2, label %exit.c
-; CHECK-NEXT: ]
-
-loop.body2:
- %addr2 = load volatile i8*, i8** %addr.ptr
- indirectbr i8* %addr2, [label %loop.backedge, label %exit.c]
-; CHECK: loop.body2:
-; CHECK-NEXT: %[[ADDR2:.*]] = load volatile i8*, i8** %addr.ptr
-; CHECK-NEXT: indirectbr i8* %[[ADDR2]], [label %loop.backedge, label %exit.c]
-
-loop.backedge:
- br label %loop.header
-; CHECK: loop.backedge:
-; CHECK-NEXT: br label %loop.header
-
-exit.a:
- ret void
-; Check that there isn't a split loop exit.
-; CHECK-NOT: br label %exit.a
-;
-; CHECK: exit.a:
-; CHECK-NEXT: ret void
-
-exit.b:
- ret void
-; CHECK: [[LOOPEXIT]]:
-; CHECK-NEXT: br label %exit.b
-;
-; CHECK: exit.b:
-; CHECK-NEXT: ret void
-
-exit.c:
- ret void
-; Check that there isn't a split loop exit.
-; CHECK-NOT: br label %exit.c
-;
-; CHECK: exit.c:
-; CHECK-NEXT: ret void
-}
diff --git a/llvm/test/Transforms/LoopSimplify/dbg-loc.ll b/llvm/test/Transforms/LoopSimplify/dbg-loc.ll
deleted file mode 100644
index efd5e8e71c9..00000000000
--- a/llvm/test/Transforms/LoopSimplify/dbg-loc.ll
+++ /dev/null
@@ -1,102 +0,0 @@
-; Check that LoopSimplify creates debug locations in synthesized basic blocks.
-; RUN: opt -loop-simplify %s -S -o - | FileCheck %s
-
-%union.anon = type { i32 }
-%"Length" = type <{ %union.anon, i8, i8, i8, i8 }>
-declare void @bar(%"Length"*) #3
-@catchtypeinfo = external unnamed_addr constant { i8*, i8*, i8* }
-declare i32 @__gxx_personality_v0(...)
-declare void @f1()
-declare void @f2()
-declare void @f3()
-
-; CHECK-LABEL: @foo
-; CHECK: for.body.preheader:
-; CHECK-NEXT: br label %for.body, !dbg [[PREHEADER_LOC:![0-9]+]]
-; CHECK: for.end.loopexit:
-; CHECK-NEXT: br label %for.end, !dbg [[LOOPEXIT_LOC:![0-9]+]]
-
-define linkonce_odr hidden void @foo(%"Length"* %begin, %"Length"* %end) nounwind ssp uwtable align 2 !dbg !6 {
-entry:
- %cmp.4 = icmp eq %"Length"* %begin, %end, !dbg !7
- br i1 %cmp.4, label %for.end, label %for.body, !dbg !8
-
-for.body: ; preds = %entry, %length.exit
- %begin.sink5 = phi %"Length"* [ %incdec.ptr, %length.exit ], [ %begin, %entry ]
- tail call void @llvm.dbg.value(metadata %"Length"* %begin.sink5, metadata !15, metadata !16), !dbg !17
- %m_type.i.i.i = getelementptr inbounds %"Length", %"Length"* %begin.sink5, i64 0, i32 2, !dbg !9
- %0 = load i8, i8* %m_type.i.i.i, align 1, !dbg !9
- %cmp.i.i = icmp eq i8 %0, 9, !dbg !7
- br i1 %cmp.i.i, label %if.then.i, label %length.exit, !dbg !8
-
-if.then.i: ; preds = %for.body
- tail call void @bar(%"Length"* %begin.sink5) #7, !dbg !10
- br label %length.exit, !dbg !10
-
-length.exit: ; preds = %for.body, %if.then.i
- %incdec.ptr = getelementptr inbounds %"Length", %"Length"* %begin.sink5, i64 1, !dbg !11
- %cmp = icmp eq %"Length"* %incdec.ptr, %end, !dbg !7
- br i1 %cmp, label %for.end, label %for.body, !dbg !8
-
-for.end: ; preds = %length.exit, %entry
- ret void, !dbg !12
-}
-
-; CHECK-LABEL: @with_landingpad
-; CHECK: catch.preheader:
-; CHECK: br label %catch, !dbg [[LPAD_PREHEADER_LOC:![0-9]+]]
-; CHECK: catch.preheader.split-lp:
-; CHECK: br label %catch, !dbg [[LPAD_PREHEADER_LOC]]
-
-define void @with_landingpad() uwtable ssp personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
-entry:
- invoke void @f1() to label %try.cont19 unwind label %catch, !dbg !13
-
-catch: ; preds = %if.else, %entry
- %0 = landingpad { i8*, i32 }
- catch i8* bitcast ({ i8*, i8*, i8* }* @catchtypeinfo to i8*), !dbg !13
- invoke void @f3() to label %if.else unwind label %eh.resume, !dbg !13
-
-if.else: ; preds = %catch
- invoke void @f2() to label %try.cont19 unwind label %catch, !dbg !13
-
-try.cont19: ; preds = %if.else, %entry
- ret void, !dbg !13
-
-eh.resume: ; preds = %catch
- %1 = landingpad { i8*, i32 }
- cleanup catch i8* bitcast ({ i8*, i8*, i8* }* @catchtypeinfo to i8*), !dbg !13
- resume { i8*, i32 } undef, !dbg !13
-}
-
-; Function Attrs: nounwind readnone
-declare void @llvm.dbg.value(metadata, metadata, metadata)
-
-; CHECK-DAG: [[PREHEADER_LOC]] = !DILocation(line: 73, column: 27, scope: !{{[0-9]+}})
-; CHECK-DAG: [[LOOPEXIT_LOC]] = !DILocation(line: 75, column: 9, scope: !{{[0-9]+}})
-; CHECK-DAG: [[LPAD_PREHEADER_LOC]] = !DILocation(line: 85, column: 1, scope: !{{[0-9]+}})
-
-!llvm.module.flags = !{!0, !1, !2}
-!llvm.dbg.cu = !{!14}
-!0 = !{i32 2, !"Dwarf Version", i32 4}
-!1 = !{i32 2, !"Debug Info Version", i32 3}
-!2 = !{i32 1, !"PIC Level", i32 2}
-
-!3 = !{}
-!4 = !DISubroutineType(types: !3)
-!5 = !DIFile(filename: "Vector.h", directory: "/tmp")
-!6 = distinct !DISubprogram(name: "destruct", scope: !5, file: !5, line: 71, type: !4, isLocal: false, isDefinition: true, scopeLine: 72, flags: DIFlagPrototyped, isOptimized: false, unit: !14, retainedNodes: !3)
-!7 = !DILocation(line: 73, column: 38, scope: !6)
-!8 = !DILocation(line: 73, column: 13, scope: !6)
-!9 = !DILocation(line: 73, column: 27, scope: !6)
-!10 = !DILocation(line: 74, column: 17, scope: !6)
-!11 = !DILocation(line: 73, column: 46, scope: !6)
-!12 = !DILocation(line: 75, column: 9, scope: !6)
-!13 = !DILocation(line: 85, column: 1, scope: !6)
-!14 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
- file: !5,
- isOptimized: true, flags: "-O2",
- splitDebugFilename: "abc.debug", emissionKind: 2)
-!15 = !DILocalVariable(name: "begin", arg: 1, scope: !6, file: !5, line: 71)
-!16 = !DIExpression()
-!17 = !DILocation(line: 71, column: 32, scope: !6)
diff --git a/llvm/test/Transforms/LoopSimplify/dup-preds.ll b/llvm/test/Transforms/LoopSimplify/dup-preds.ll
deleted file mode 100644
index c9253fa51a6..00000000000
--- a/llvm/test/Transforms/LoopSimplify/dup-preds.ll
+++ /dev/null
@@ -1,46 +0,0 @@
-; RUN: opt -loop-simplify -S %s | FileCheck %s
-target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
-target triple = "powerpc64-bgq-linux"
-
-define fastcc void @do_update_md([3 x float]* nocapture readonly %x) #0 {
-entry:
- br i1 undef, label %if.end365, label %lor.lhs.false134
-
-lor.lhs.false134: ; preds = %entry
- br i1 undef, label %lor.lhs.false138, label %if.end365
-
-lor.lhs.false138: ; preds = %lor.lhs.false134
- br i1 undef, label %lor.lhs.false142, label %if.end365
-
-lor.lhs.false142: ; preds = %lor.lhs.false138
- br i1 undef, label %for.body276.lr.ph, label %if.end365
-
-for.body276.lr.ph: ; preds = %lor.lhs.false142
- switch i16 undef, label %if.then288 [
- i16 4, label %for.body344
- i16 2, label %for.body344
- ]
-
-if.then288: ; preds = %for.body276.lr.ph
- br label %for.body305
-
-for.body305: ; preds = %for.body305, %if.then288
- br label %for.body305
-
-for.body344: ; preds = %for.body344, %for.body276.lr.ph, %for.body276.lr.ph
- %indvar = phi i64 [ %indvar.next, %for.body344 ], [ 0, %for.body276.lr.ph ], [ 0, %for.body276.lr.ph ]
- %indvars.iv552 = phi i64 [ %indvars.iv.next553, %for.body344 ], [ 0, %for.body276.lr.ph ], [ 0, %for.body276.lr.ph ]
- %indvars.iv.next553 = add nuw nsw i64 %indvars.iv552, 1
- %indvar.next = add i64 %indvar, 1
- br label %for.body344
-
-; CHECK-LABEL: @do_update_md
-; CHECK: %indvars.iv552 = phi i64 [ %indvars.iv.next553, %for.body344 ], [ 0, %for.body344.preheader ]
-; CHECK: ret
-
-if.end365: ; preds = %lor.lhs.false142, %lor.lhs.false138, %lor.lhs.false134, %entry
- ret void
-}
-
-attributes #0 = { nounwind }
-
diff --git a/llvm/test/Transforms/LoopSimplify/hardertest.ll b/llvm/test/Transforms/LoopSimplify/hardertest.ll
deleted file mode 100644
index 1ccb396490c..00000000000
--- a/llvm/test/Transforms/LoopSimplify/hardertest.ll
+++ /dev/null
@@ -1,15 +0,0 @@
-; RUN: opt < %s -loop-simplify
-
-define void @foo(i1 %C) {
- br i1 %C, label %T, label %F
-T: ; preds = %0
- br label %Loop
-F: ; preds = %0
- br label %Loop
-Loop: ; preds = %L2, %Loop, %F, %T
- %Val = phi i32 [ 0, %T ], [ 1, %F ], [ 2, %Loop ], [ 3, %L2 ] ; <i32> [#uses=0]
- br i1 %C, label %Loop, label %L2
-L2: ; preds = %Loop
- br label %Loop
-}
-
diff --git a/llvm/test/Transforms/LoopSimplify/indirectbr-backedge.ll b/llvm/test/Transforms/LoopSimplify/indirectbr-backedge.ll
deleted file mode 100644
index 7eabc09cd7d..00000000000
--- a/llvm/test/Transforms/LoopSimplify/indirectbr-backedge.ll
+++ /dev/null
@@ -1,35 +0,0 @@
-; RUN: opt -loop-simplify -S < %s | FileCheck %s
-
-; LoopSimplify shouldn't split loop backedges that use indirectbr.
-
-; CHECK: bb1: ; preds = %bb5, %bb
-; CHECK-NEXT: indirectbr
-
-; CHECK: bb5: ; preds = %bb1
-; CHECK-NEXT: br label %bb1{{$}}
-
-define void @foo(i8* %p) nounwind {
-bb:
- br label %bb1
-
-bb1: ; preds = %bb5, %bb1, %bb
- indirectbr i8* %p, [label %bb6, label %bb7, label %bb1, label %bb2, label %bb3, label %bb5, label %bb4]
-
-bb2: ; preds = %bb1
- ret void
-
-bb3: ; preds = %bb1
- ret void
-
-bb4: ; preds = %bb1
- ret void
-
-bb5: ; preds = %bb1
- br label %bb1
-
-bb6: ; preds = %bb1
- ret void
-
-bb7: ; preds = %bb1
- ret void
-}
diff --git a/llvm/test/Transforms/LoopSimplify/indirectbr.ll b/llvm/test/Transforms/LoopSimplify/indirectbr.ll
deleted file mode 100644
index ca05f437e5c..00000000000
--- a/llvm/test/Transforms/LoopSimplify/indirectbr.ll
+++ /dev/null
@@ -1,100 +0,0 @@
-; RUN: opt < %s -loop-simplify -lcssa -verify-loop-info -verify-dom-info -S \
-; RUN: | grep -F "indirectbr i8* %x, [label %L0, label %L1]" \
-; RUN: | count 6
-
-; LoopSimplify should not try to transform loops when indirectbr is involved.
-
-define void @entry(i8* %x) {
-entry:
- indirectbr i8* %x, [ label %L0, label %L1 ]
-
-L0:
- br label %L0
-
-L1:
- ret void
-}
-
-define void @backedge(i8* %x) {
-entry:
- br label %L0
-
-L0:
- br label %L1
-
-L1:
- indirectbr i8* %x, [ label %L0, label %L1 ]
-}
-
-define i64 @exit(i8* %x) {
-entry:
- br label %L2
-
-L2:
- %z = bitcast i64 0 to i64
- indirectbr i8* %x, [ label %L0, label %L1 ]
-
-L0:
- br label %L2
-
-L1:
- ret i64 %z
-}
-
-define i64 @criticalexit(i8* %x, i1 %a) {
-entry:
- br i1 %a, label %L1, label %L2
-
-L2:
- %z = bitcast i64 0 to i64
- indirectbr i8* %x, [ label %L0, label %L1 ]
-
-L0:
- br label %L2
-
-L1:
- %y = phi i64 [ %z, %L2 ], [ 1, %entry ]
- ret i64 %y
-}
-
-define i64 @exit_backedge(i8* %x) {
-entry:
- br label %L0
-
-L0:
- %z = bitcast i64 0 to i64
- indirectbr i8* %x, [ label %L0, label %L1 ]
-
-L1:
- ret i64 %z
-}
-
-define i64 @criticalexit_backedge(i8* %x, i1 %a) {
-entry:
- br i1 %a, label %L0, label %L1
-
-L0:
- %z = bitcast i64 0 to i64
- indirectbr i8* %x, [ label %L0, label %L1 ]
-
-L1:
- %y = phi i64 [ %z, %L0 ], [ 1, %entry ]
- ret i64 %y
-}
-
-define void @pr5502() nounwind {
-entry:
- br label %while.cond
-
-while.cond:
- br i1 undef, label %while.body, label %while.end
-
-while.body:
- indirectbr i8* undef, [label %end_opcode, label %end_opcode]
-
-end_opcode:
- br i1 false, label %end_opcode, label %while.cond
-
-while.end:
- ret void
-}
diff --git a/llvm/test/Transforms/LoopSimplify/merge-exits.ll b/llvm/test/Transforms/LoopSimplify/merge-exits.ll
deleted file mode 100644
index 5cdf8148778..00000000000
--- a/llvm/test/Transforms/LoopSimplify/merge-exits.ll
+++ /dev/null
@@ -1,48 +0,0 @@
-; RUN: opt < %s -loop-simplify -loop-rotate -instcombine -indvars -S -verify-loop-info -verify-dom-info | FileCheck %s
-
-; Loopsimplify should be able to merge the two loop exits
-; into one, so that loop rotate can rotate the loop, so
-; that indvars can promote the induction variable to i64
-; without needing casts.
-
-target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n32:64"
-
-; CHECK-LABEL: @test1
-; CHECK: bb:
-; CHECK: phi i64
-; CHECK-NOT: phi i64
-; CHECK-NOT: sext
-
-define float @test1(float* %pTmp1, float* %peakWeight, i32 %bandEdgeIndex) nounwind {
-entry:
- %t0 = load float, float* %peakWeight, align 4
- br label %bb1
-
-bb: ; preds = %bb2
- %t1 = sext i32 %hiPart.0 to i64
- %t2 = getelementptr float, float* %pTmp1, i64 %t1
- %t3 = load float, float* %t2, align 4
- %t4 = fadd float %t3, %distERBhi.0
- %t5 = add i32 %hiPart.0, 1
- %t6 = sext i32 %t5 to i64
- %t7 = getelementptr float, float* %peakWeight, i64 %t6
- %t8 = load float, float* %t7, align 4
- %t9 = fadd float %t8, %peakCount.0
- br label %bb1
-
-bb1: ; preds = %bb, %entry
- %peakCount.0 = phi float [ %t0, %entry ], [ %t9, %bb ]
- %hiPart.0 = phi i32 [ 0, %entry ], [ %t5, %bb ]
- %distERBhi.0 = phi float [ 0.000000e+00, %entry ], [ %t4, %bb ]
- %t10 = fcmp uge float %distERBhi.0, 2.500000e+00
- br i1 %t10, label %bb3, label %bb2
-
-bb2: ; preds = %bb1
- %t11 = add i32 %bandEdgeIndex, -1
- %t12 = icmp sgt i32 %t11, %hiPart.0
- br i1 %t12, label %bb, label %bb3
-
-bb3: ; preds = %bb2, %bb1
- %t13 = fdiv float %peakCount.0, %distERBhi.0
- ret float %t13
-}
diff --git a/llvm/test/Transforms/LoopSimplify/notify-scev.ll b/llvm/test/Transforms/LoopSimplify/notify-scev.ll
deleted file mode 100644
index 059b589abef..00000000000
--- a/llvm/test/Transforms/LoopSimplify/notify-scev.ll
+++ /dev/null
@@ -1,110 +0,0 @@
-; RUN: opt -indvars -S %s | FileCheck %s
-;
-; PR18384: ValueHandleBase::ValueIsDeleted.
-;
-; Ensure that LoopSimplify calls ScalarEvolution::forgetLoop before
-; deleting a block, regardless of whether any values were hoisted out
-; of the block.
-
-target datalayout = "e-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-apple-darwin"
-
-%struct.Params = type { [2 x [4 x [16 x i16]]] }
-
-; Verify that the loop tail is deleted, and we don't crash!
-;
-; CHECK-LABEL: @t
-; CHECK-LABEL: for.cond127.preheader:
-; CHECK-NOT: for.cond127:
-; CHECK-LABEL: for.body129:
-define void @t() {
-entry:
- br label %for.body102
-
-for.body102:
- br i1 undef, label %for.cond127.preheader, label %for.inc203
-
-for.cond127.preheader:
- br label %for.body129
-
-for.cond127:
- %cmp128 = icmp slt i32 %inc191, 2
- br i1 %cmp128, label %for.body129, label %for.end192
-
-for.body129:
- %uv.013 = phi i32 [ 0, %for.cond127.preheader ], [ %inc191, %for.cond127 ]
- %idxprom130 = sext i32 %uv.013 to i64
- br i1 undef, label %for.cond135.preheader.lr.ph, label %for.end185
-
-for.cond135.preheader.lr.ph:
- br i1 undef, label %for.cond135.preheader.lr.ph.split.us, label %for.cond135.preheader.lr.ph.split_crit_edge
-
-for.cond135.preheader.lr.ph.split_crit_edge:
- br label %for.cond135.preheader.lr.ph.split
-
-for.cond135.preheader.lr.ph.split.us:
- br label %for.cond135.preheader.us
-
-for.cond135.preheader.us:
- %block_y.09.us = phi i32 [ 0, %for.cond135.preheader.lr.ph.split.us ], [ %add184.us, %for.cond132.us ]
- br i1 true, label %for.cond138.preheader.lr.ph.us, label %for.end178.us
-
-for.end178.us:
- %add184.us = add nsw i32 %block_y.09.us, 4
- br i1 undef, label %for.end185split.us-lcssa.us, label %for.cond132.us
-
-for.end174.us:
- br i1 undef, label %for.cond138.preheader.us, label %for.cond135.for.end178_crit_edge.us
-
-for.inc172.us:
- br i1 undef, label %for.cond142.preheader.us, label %for.end174.us
-
-for.body145.us:
- %arrayidx163.us = getelementptr inbounds %struct.Params, %struct.Params* undef, i64 0, i32 0, i64 %idxprom130, i64 %idxprom146.us
- br i1 undef, label %for.body145.us, label %for.inc172.us
-
-for.cond142.preheader.us:
- %j.04.us = phi i32 [ %block_y.09.us, %for.cond138.preheader.us ], [ undef, %for.inc172.us ]
- %idxprom146.us = sext i32 %j.04.us to i64
- br label %for.body145.us
-
-for.cond138.preheader.us:
- br label %for.cond142.preheader.us
-
-for.cond132.us:
- br i1 undef, label %for.cond135.preheader.us, label %for.cond132.for.end185_crit_edge.us-lcssa.us
-
-for.cond138.preheader.lr.ph.us:
- br label %for.cond138.preheader.us
-
-for.cond135.for.end178_crit_edge.us:
- br label %for.end178.us
-
-for.end185split.us-lcssa.us:
- br label %for.end185split
-
-for.cond132.for.end185_crit_edge.us-lcssa.us:
- br label %for.cond132.for.end185_crit_edge
-
-for.cond135.preheader.lr.ph.split:
- br label %for.end185split
-
-for.end185split:
- br label %for.end185
-
-for.cond132.for.end185_crit_edge:
- br label %for.end185
-
-for.end185:
- %inc191 = add nsw i32 %uv.013, 1
- br i1 false, label %for.end192, label %for.cond127
-
-for.end192:
- br label %for.inc203
-
-for.inc203:
- br label %for.end205
-
-for.end205:
- ret void
-}
diff --git a/llvm/test/Transforms/LoopSimplify/phi-node-simplify.ll b/llvm/test/Transforms/LoopSimplify/phi-node-simplify.ll
deleted file mode 100644
index 6536acb7b03..00000000000
--- a/llvm/test/Transforms/LoopSimplify/phi-node-simplify.ll
+++ /dev/null
@@ -1,55 +0,0 @@
-; Loop Simplify should turn phi nodes like X = phi [X, Y] into just Y, eliminating them.
-; RUN: opt < %s -loop-simplify -S | grep phi | count 6
-
-@A = weak global [3000000 x i32] zeroinitializer ; <[3000000 x i32]*> [#uses=1]
-@B = weak global [20000 x i32] zeroinitializer ; <[20000 x i32]*> [#uses=1]
-@C = weak global [100 x i32] zeroinitializer ; <[100 x i32]*> [#uses=1]
-@Z = weak global i32 0 ; <i32*> [#uses=2]
-
-define i32 @main() {
-entry:
- tail call void @__main( )
- br label %loopentry.1
-loopentry.1: ; preds = %loopexit.1, %entry
- %indvar20 = phi i32 [ 0, %entry ], [ %indvar.next21, %loopexit.1 ] ; <i32> [#uses=1]
- %a.1 = phi i32* [ getelementptr ([3000000 x i32], [3000000 x i32]* @A, i32 0, i32 0), %entry ], [ %inc.0, %loopexit.1 ] ; <i32*> [#uses=1]
- br label %no_exit.2
-no_exit.2: ; preds = %loopexit.2, %no_exit.2, %loopentry.1
- %a.0.4.ph = phi i32* [ %a.1, %loopentry.1 ], [ %inc.0, %loopexit.2 ], [ %a.0.4.ph, %no_exit.2 ] ; <i32*> [#uses=3]
- %b.1.4.ph = phi i32* [ getelementptr ([20000 x i32], [20000 x i32]* @B, i32 0, i32 0), %loopentry.1 ], [ %inc.1, %loopexit.2 ], [ %b.1.4.ph, %no_exit.2 ] ; <i32*> [#uses=3]
- %indvar17 = phi i32 [ 0, %loopentry.1 ], [ %indvar.next18, %loopexit.2 ], [ %indvar17, %no_exit.2 ] ; <i32> [#uses=2]
- %indvar = phi i32 [ %indvar.next, %no_exit.2 ], [ 0, %loopexit.2 ], [ 0, %loopentry.1 ] ; <i32> [#uses=5]
- %b.1.4.rec = bitcast i32 %indvar to i32 ; <i32> [#uses=1]
- %gep.upgrd.1 = zext i32 %indvar to i64 ; <i64> [#uses=1]
- %c.2.4 = getelementptr [100 x i32], [100 x i32]* @C, i32 0, i64 %gep.upgrd.1 ; <i32*> [#uses=1]
- %gep.upgrd.2 = zext i32 %indvar to i64 ; <i64> [#uses=1]
- %a.0.4 = getelementptr i32, i32* %a.0.4.ph, i64 %gep.upgrd.2 ; <i32*> [#uses=1]
- %gep.upgrd.3 = zext i32 %indvar to i64 ; <i64> [#uses=1]
- %b.1.4 = getelementptr i32, i32* %b.1.4.ph, i64 %gep.upgrd.3 ; <i32*> [#uses=1]
- %inc.0.rec = add i32 %b.1.4.rec, 1 ; <i32> [#uses=2]
- %inc.0 = getelementptr i32, i32* %a.0.4.ph, i32 %inc.0.rec ; <i32*> [#uses=2]
- %tmp.13 = load i32, i32* %a.0.4 ; <i32> [#uses=1]
- %inc.1 = getelementptr i32, i32* %b.1.4.ph, i32 %inc.0.rec ; <i32*> [#uses=1]
- %tmp.15 = load i32, i32* %b.1.4 ; <i32> [#uses=1]
- %tmp.18 = load i32, i32* %c.2.4 ; <i32> [#uses=1]
- %tmp.16 = mul i32 %tmp.15, %tmp.13 ; <i32> [#uses=1]
- %tmp.19 = mul i32 %tmp.16, %tmp.18 ; <i32> [#uses=1]
- %tmp.20 = load i32, i32* @Z ; <i32> [#uses=1]
- %tmp.21 = add i32 %tmp.19, %tmp.20 ; <i32> [#uses=1]
- store i32 %tmp.21, i32* @Z
- %indvar.next = add i32 %indvar, 1 ; <i32> [#uses=2]
- %exitcond = icmp eq i32 %indvar.next, 100 ; <i1> [#uses=1]
- br i1 %exitcond, label %loopexit.2, label %no_exit.2
-loopexit.2: ; preds = %no_exit.2
- %indvar.next18 = add i32 %indvar17, 1 ; <i32> [#uses=2]
- %exitcond19 = icmp eq i32 %indvar.next18, 200 ; <i1> [#uses=1]
- br i1 %exitcond19, label %loopexit.1, label %no_exit.2
-loopexit.1: ; preds = %loopexit.2
- %indvar.next21 = add i32 %indvar20, 1 ; <i32> [#uses=2]
- %exitcond22 = icmp eq i32 %indvar.next21, 300 ; <i1> [#uses=1]
- br i1 %exitcond22, label %return, label %loopentry.1
-return: ; preds = %loopexit.1
- ret i32 undef
-}
-
-declare void @__main()
diff --git a/llvm/test/Transforms/LoopSimplify/pr26682.ll b/llvm/test/Transforms/LoopSimplify/pr26682.ll
deleted file mode 100644
index 092c0c3f0b0..00000000000
--- a/llvm/test/Transforms/LoopSimplify/pr26682.ll
+++ /dev/null
@@ -1,32 +0,0 @@
-; RUN: opt < %s -lcssa -loop-simplify -indvars -S | FileCheck %s
-target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-unknown-unknown"
-
-@a = external global i32, align 4
-
-; Check that loop-simplify merges two loop exits, but preserves LCSSA form.
-; CHECK-LABEL: @foo
-; CHECK: for:
-; CHECK: %or.cond = and i1 %cmp1, %cmp2
-; CHECK-NOT: for.cond:
-; CHECK: for.end:
-; CHECK: %a.lcssa = phi i32 [ %a, %for ]
-define i32 @foo(i32 %x) {
-entry:
- br label %for
-
-for:
- %iv = phi i32 [ 0, %entry ], [ %iv.next, %for.cond ]
- %cmp1 = icmp eq i32 %x, 0
- %iv.next = add nuw nsw i32 %iv, 1
- %a = load i32, i32* @a
- br i1 %cmp1, label %for.cond, label %for.end
-
-for.cond:
- %cmp2 = icmp slt i32 %iv.next, 4
- br i1 %cmp2, label %for, label %for.end
-
-for.end:
- %a.lcssa = phi i32 [ %a, %for ], [ %a, %for.cond ]
- ret i32 %a.lcssa
-}
diff --git a/llvm/test/Transforms/LoopSimplify/pr28272.ll b/llvm/test/Transforms/LoopSimplify/pr28272.ll
deleted file mode 100644
index d4025dbd44c..00000000000
--- a/llvm/test/Transforms/LoopSimplify/pr28272.ll
+++ /dev/null
@@ -1,139 +0,0 @@
-; RUN: opt < %s -lcssa -loop-simplify -indvars -S | FileCheck %s
-target triple = "x86_64-unknown-linux-gnu"
-
-; PR28272, PR28825
-; 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
-}
-
-; When LoopSimplify separates nested loops, it might break LCSSA form: values
-; from the original loop might be used in exit blocks of the outer loop.
-; CHECK-LABEL: @foo3
-define void @foo3() {
-entry:
- br label %bb1
-
-bb1:
- br i1 undef, label %bb2, label %bb1
-
-bb2:
- %a = phi i32 [ undef, %bb1 ], [ %a, %bb3 ], [ undef, %bb5 ]
- br i1 undef, label %bb3, label %bb1
-
-bb3:
- %b = load i32*, i32** undef
- br i1 undef, label %bb2, label %bb4
-
-bb4:
- br i1 undef, label %bb5, label %bb6
-
-bb5:
- br i1 undef, label %bb2, label %bb4
-
-bb6:
- br i1 undef, label %bb_end, label %bb1
-
-bb_end:
- %x = getelementptr i32, i32* %b
- br label %bb_end
-}
-
-; When LoopSimplify separates nested loops, it might break LCSSA form: values
-; from the original loop might occur in a loop, which is now a sibling of the
-; original loop (before separating it was a subloop of the original loop, and
-; thus didn't require an lcssa phi nodes).
-; CHECK-LABEL: @foo4
-define void @foo4() {
-bb1:
- br label %bb2
-
-; CHECK: bb2.loopexit:
-bb2.loopexit: ; preds = %bb3
- %i.ph = phi i32 [ 0, %bb3 ]
- br label %bb2
-
-; CHECK: bb2.outer:
-; CHECK: bb2:
-bb2: ; preds = %bb2.loopexit, %bb2, %bb1
- %i = phi i32 [ 0, %bb1 ], [ %i, %bb2 ], [ %i.ph, %bb2.loopexit ]
- %x = load i32, i32* undef, align 8
- br i1 undef, label %bb2, label %bb3.preheader
-
-; CHECK: bb3.preheader:
-bb3.preheader: ; preds = %bb2
-; CHECK: %x.lcssa = phi i32 [ %x, %bb2 ]
- br label %bb3
-
-bb3: ; preds = %bb3.preheader, %bb3
- %y = add i32 2, %x
- br i1 true, label %bb2.loopexit, label %bb3
-}
diff --git a/llvm/test/Transforms/LoopSimplify/pr30454.ll b/llvm/test/Transforms/LoopSimplify/pr30454.ll
deleted file mode 100644
index 3dcc393aa81..00000000000
--- a/llvm/test/Transforms/LoopSimplify/pr30454.ll
+++ /dev/null
@@ -1,32 +0,0 @@
-; RUN: opt < %s -lcssa -licm -S | FileCheck %s
-; PR30454
-target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-unknown-linux-gnu"
-
-declare i8 @bar()
-
-; Test that we preserve LCSSA form when removing edges from unreachable blocks.
-; CHECK-LABEL: @foo
-define void @foo() {
-entry:
- br label %for.cond
-
-for.cond:
- %x = phi i8 [ undef, %entry ], [ %y, %for.latch ]
- br i1 undef, label %for.latch, label %exit
-
-; CHECK: unreachable.bb:
-; CHECK-NEXT: unreachable
-unreachable.bb:
- br i1 undef, label %exit, label %for.latch
-
-for.latch:
- %y = call i8 @bar()
- br label %for.cond
-
-; CHECK: exit:
-; CHECK-NEXT: %x.lcssa = phi i8 [ %x, %for.cond ]
-exit:
- %z = zext i8 %x to i32
- ret void
-}
diff --git a/llvm/test/Transforms/LoopSimplify/pr33494.ll b/llvm/test/Transforms/LoopSimplify/pr33494.ll
deleted file mode 100644
index 5d3b4e80941..00000000000
--- a/llvm/test/Transforms/LoopSimplify/pr33494.ll
+++ /dev/null
@@ -1,75 +0,0 @@
-; RUN: opt -loop-unroll -loop-simplify -S < %s | FileCheck %s
-
-; This test is one of the tests of PR33494. Its compilation takes
-; excessive time if we don't mark visited nodes while looking for
-; constants in SCEV expression trees.
-
-target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-unknown-linux-gnu"
-
-define void @test_01(i32* nocapture %a) local_unnamed_addr {
-
-; CHECK-LABEL: @test_01(
-
-entry:
- %arrayidx = getelementptr inbounds i32, i32* %a, i64 96
- %arrayidx.promoted51 = load i32, i32* %arrayidx, align 1
- br label %while.body
-
-while.body: ; preds = %entry, %while.end29
- %0 = phi i32 [ %arrayidx.promoted51, %entry ], [ %7, %while.end29 ]
- %cmp46 = icmp eq i32 %0, 1
- %conv47 = zext i1 %cmp46 to i32
- %1 = add i32 %0, 1
- %2 = icmp ult i32 %1, 3
- %div48 = select i1 %2, i32 %0, i32 0
- %cmp349 = icmp sgt i32 %div48, %conv47
- br i1 %cmp349, label %while.body4.lr.ph, label %while.end29
-
-while.body4.lr.ph: ; preds = %while.body
- br label %while.body4
-
-while.body4: ; preds = %while.body4.lr.ph, %while.end28
- %3 = phi i32 [ %0, %while.body4.lr.ph ], [ %mul17.lcssa, %while.end28 ]
- br label %while.body13
-
-while.body13: ; preds = %while.body4, %while.end.split
- %mul1745 = phi i32 [ %3, %while.body4 ], [ %mul17, %while.end.split ]
- %4 = phi i32 [ 15872, %while.body4 ], [ %add, %while.end.split ]
- %mul = mul nsw i32 %mul1745, %mul1745
- %mul17 = mul nsw i32 %mul, %mul1745
- %cmp22 = icmp eq i32 %4, %mul17
- br i1 %cmp22, label %while.body13.split, label %while.end.split
-
-while.body13.split: ; preds = %while.body13
- br label %while.cond19
-
-while.cond19: ; preds = %while.cond19, %while.body13.split
- br label %while.cond19
-
-while.end.split: ; preds = %while.body13
- %add = shl nsw i32 %4, 1
- %tobool12 = icmp eq i32 %add, 0
- br i1 %tobool12, label %while.end28, label %while.body13
-
-while.end28: ; preds = %while.end.split
- %add.lcssa = phi i32 [ %add, %while.end.split ]
- %mul17.lcssa = phi i32 [ %mul17, %while.end.split ]
- %cmp = icmp eq i32 %mul17.lcssa, 1
- %conv = zext i1 %cmp to i32
- %5 = add i32 %mul17.lcssa, 1
- %6 = icmp ult i32 %5, 3
- %div = select i1 %6, i32 %mul17.lcssa, i32 0
- %cmp3 = icmp sgt i32 %div, %conv
- br i1 %cmp3, label %while.body4, label %while.cond1.while.end29_crit_edge
-
-while.cond1.while.end29_crit_edge: ; preds = %while.end28
- %.lcssa = phi i32 [ %mul17.lcssa, %while.end28 ]
- %add.lcssa50.lcssa = phi i32 [ %add.lcssa, %while.end28 ]
- store i32 %add.lcssa50.lcssa, i32* %a, align 4
- br label %while.end29
-
-while.end29: ; preds = %while.cond1.while.end29_crit_edge, %while.body
- %7 = phi i32 [ %.lcssa, %while.cond1.while.end29_crit_edge ], [ %0, %while.body ]
- br label %while.body
-}
diff --git a/llvm/test/Transforms/LoopSimplify/preserve-llvm-loop-metadata.ll b/llvm/test/Transforms/LoopSimplify/preserve-llvm-loop-metadata.ll
deleted file mode 100644
index c1397606487..00000000000
--- a/llvm/test/Transforms/LoopSimplify/preserve-llvm-loop-metadata.ll
+++ /dev/null
@@ -1,70 +0,0 @@
-; RUN: opt -loop-simplify -S < %s | FileCheck %s
-
-; CHECK-LABEL: @test1
-define void @test1(i32 %n) {
-entry:
- br label %while.cond
-
-while.cond: ; preds = %if.then, %if.else, %entry
- %count.0 = phi i32 [ 0, %entry ], [ %add, %if.then ], [ %add2, %if.else ]
- %cmp = icmp ugt i32 %count.0, %n
- br i1 %cmp, label %while.end, label %while.body
-
-while.body: ; preds = %while.cond
- %rem = and i32 %count.0, 1
- %cmp1 = icmp eq i32 %rem, 0
- br i1 %cmp1, label %if.then, label %if.else
-
-if.then: ; preds = %while.body
- %add = add i32 %count.0, 1
- br label %while.cond, !llvm.loop !0
-
-if.else: ; preds = %while.body
- %add2 = add i32 %count.0, 2
- br label %while.cond, !llvm.loop !0
-
-while.end: ; preds = %while.cond
- ret void
-}
-
-; CHECK: if.then
-; CHECK-NOT: br {{.*}}!llvm.loop{{.*}}
-
-; CHECK: while.cond.backedge:
-; CHECK: br label %while.cond, !llvm.loop !0
-
-; CHECK: if.else
-; CHECK-NOT: br {{.*}}!llvm.loop{{.*}}
-
-; CHECK-LABEL: @test2
-; CHECK: for.body:
-; CHECK: br i1 %{{.*}}, label %for.body, label %cleanup.loopexit, !llvm.loop !0
-define void @test2(i32 %k) {
-entry:
- %cmp9 = icmp sgt i32 %k, 0
- br i1 %cmp9, label %for.body.preheader, label %cleanup
-
-for.body.preheader: ; preds = %entry
- br label %for.body
-
-for.cond: ; preds = %for.body
- %cmp = icmp slt i32 %inc, %k
- br i1 %cmp, label %for.body, label %cleanup.loopexit, !llvm.loop !0
-
-for.body: ; preds = %for.body.preheader, %for.cond
- %i.010 = phi i32 [ %inc, %for.cond ], [ 0, %for.body.preheader ]
- %cmp3 = icmp sgt i32 %i.010, 3
- %inc = add nsw i32 %i.010, 1
- br i1 %cmp3, label %cleanup.loopexit, label %for.cond
-
-cleanup.loopexit: ; preds = %for.body, %for.cond
- br label %cleanup
-
-cleanup: ; preds = %cleanup.loopexit, %entry
- ret void
-}
-
-!0 = distinct !{!0, !1}
-!1 = !{!"llvm.loop.distribute.enable", i1 true}
-; CHECK: !0 = distinct !{!0, !1}
-; CHECK: !1 = !{!"llvm.loop.distribute.enable", i1 true}
diff --git a/llvm/test/Transforms/LoopSimplify/preserve-scev.ll b/llvm/test/Transforms/LoopSimplify/preserve-scev.ll
deleted file mode 100644
index 07486ef2468..00000000000
--- a/llvm/test/Transforms/LoopSimplify/preserve-scev.ll
+++ /dev/null
@@ -1,180 +0,0 @@
-; RUN: opt -S < %s -analyze -scalar-evolution -loop-simplify -scalar-evolution | FileCheck %s
-
-; Provide legal integer types.
-target datalayout = "n8:16:32:64"
-
-@maxStat = external global i32
-
-; LoopSimplify should invalidate SCEV when splitting out the
-; inner loop.
-;
-; First SCEV print:
-; CHECK-LABEL: Classifying expressions for: @test
-; CHECK: %[[PHI:.*]] = phi i32 [ 0, %entry ], [ %{{.*}}, %if.then5 ], [ %[[PHI]], %if.end ]
-; CHECK-LABEL: Determining loop execution counts for: @test
-; CHECK: Loop %for.body18: Unpredictable backedge-taken count.
-; CHECK: Loop %for.body18: max backedge-taken count is 2147483646
-; CHECK: Loop %for.body18: Unpredictable predicated backedge-taken count.
-; CHECK: Loop %for.cond: <multiple exits> Unpredictable backedge-taken count.
-; CHECK: Loop %for.cond: Unpredictable max backedge-taken count.
-; CHECK: Loop %for.cond: Unpredictable predicated backedge-taken count.
-;
-; Now simplify the loop, which should cause SCEV to re-compute more precise
-; info here in addition to having preheader PHIs. Second SCEV print:
-; CHECK-LABEL: Classifying expressions for: @test
-; CHECK: phi i32 [ %{{.*}}, %if.then5 ], [ 0, %entry ]
-; CHECK-LABEL: Determining loop execution counts for: @test
-; CHECK: Loop %for.body18: Unpredictable backedge-taken count.
-; CHECK: Loop %for.body18: max backedge-taken count is 2147483646
-; CHECK: Loop %for.body18: Unpredictable predicated backedge-taken count.
-; CHECK: Loop %for.cond: <multiple exits> Unpredictable backedge-taken count.
-; CHECK: Loop %for.cond: max backedge-taken count is -2147483647
-; CHECK: Loop %for.cond: Unpredictable predicated backedge-taken count.
-; CHECK: Loop %for.cond.outer: <multiple exits> Unpredictable backedge-taken count.
-; CHECK: Loop %for.cond.outer: Unpredictable max backedge-taken count.
-; CHECK: Loop %for.cond.outer: Unpredictable predicated backedge-taken count.
-define i32 @test() nounwind {
-entry:
- br label %for.cond
-
-for.cond: ; preds = %if.then5, %if.end, %entry
- %cuts.1 = phi i32 [ 0, %entry ], [ %inc, %if.then5 ], [ %cuts.1, %if.end ]
- %0 = phi i32 [ 0, %entry ], [ %add, %if.end ], [ %add, %if.then5 ]
- %add = add i32 %0, 1
- %cmp = icmp slt i32 %0, 1
- %tmp1 = load i32, i32* @maxStat, align 4
- br i1 %cmp, label %for.body, label %for.cond14.preheader
-
-for.cond14.preheader: ; preds = %for.cond
- %cmp1726 = icmp sgt i32 %tmp1, 0
- br i1 %cmp1726, label %for.body18, label %return
-
-for.body: ; preds = %for.cond
- %cmp2 = icmp sgt i32 %tmp1, 100
- br i1 %cmp2, label %return, label %if.end
-
-if.end: ; preds = %for.body
- %cmp4 = icmp sgt i32 %tmp1, -1
- br i1 %cmp4, label %if.then5, label %for.cond
-
-if.then5: ; preds = %if.end
- call void @foo() nounwind
- %inc = add i32 %cuts.1, 1
- br label %for.cond
-
-for.body18: ; preds = %for.body18, %for.cond14.preheader
- %i13.027 = phi i32 [ %1, %for.body18 ], [ 0, %for.cond14.preheader ]
- call void @foo() nounwind
- %1 = add nsw i32 %i13.027, 1
- %tmp16 = load i32, i32* @maxStat, align 4
- %cmp17 = icmp slt i32 %1, %tmp16
- br i1 %cmp17, label %for.body18, label %return
-
-return: ; preds = %for.body18, %for.body, %for.cond14.preheader
- ret i32 0
-}
-
-declare void @foo() nounwind
-
-; Notify SCEV when removing an ExitingBlock. This only changes the
-; backedge-taken information.
-;
-; First SCEV print:
-; CHECK-LABEL: Determining loop execution counts for: @mergeExit
-; CHECK: Loop %while.cond191: <multiple exits> Unpredictable backedge-taken count.
-; CHECK: Loop %while.cond191: max backedge-taken count is -1
-; CHECK: Loop %while.cond191: Unpredictable predicated backedge-taken count.
-; CHECK: Loop %while.cond191.outer: <multiple exits> Unpredictable backedge-taken count.
-; CHECK: Loop %while.cond191.outer: Unpredictable max backedge-taken count.
-; CHECK: Loop %while.cond191.outer: Unpredictable predicated backedge-taken count.
-;
-; After simplifying, the max backedge count is refined.
-; Second SCEV print:
-; CHECK-LABEL: Determining loop execution counts for: @mergeExit
-; CHECK: Loop %while.cond191: <multiple exits> backedge-taken count is 0
-; CHECK: Loop %while.cond191: max backedge-taken count is 0
-; CHECK: Loop %while.cond191: Predicated backedge-taken count is 0
-; CHECK: Loop %while.cond191.outer: <multiple exits> Unpredictable backedge-taken count.
-; CHECK: Loop %while.cond191.outer: max backedge-taken count is false
-; CHECK: Loop %while.cond191.outer: Unpredictable predicated backedge-taken count.
-define void @mergeExit(i32 %MapAttrCount) nounwind uwtable ssp {
-entry:
- br i1 undef, label %if.then124, label %if.end126
-
-if.then124: ; preds = %entry
- unreachable
-
-if.end126: ; preds = %entry
- br i1 undef, label %while.body.lr.ph, label %if.end591
-
-while.body.lr.ph: ; preds = %if.end126
- br i1 undef, label %if.end140, label %if.then137
-
-if.then137: ; preds = %while.body.lr.ph
- unreachable
-
-if.end140: ; preds = %while.body.lr.ph
- br i1 undef, label %while.cond191.outer, label %if.then148
-
-if.then148: ; preds = %if.end140
- unreachable
-
-while.cond191.outer: ; preds = %if.then205, %if.end140
- br label %while.cond191
-
-while.cond191: ; preds = %while.body197, %while.cond191.outer
- %CppIndex.0 = phi i32 [ %inc, %while.body197 ], [ undef, %while.cond191.outer ]
- br i1 undef, label %land.rhs, label %if.then216
-
-land.rhs: ; preds = %while.cond191
- %inc = add i32 %CppIndex.0, 1
- %cmp196 = icmp ult i32 %inc, %MapAttrCount
- br i1 %cmp196, label %while.body197, label %if.then216
-
-while.body197: ; preds = %land.rhs
- br i1 undef, label %if.then205, label %while.cond191
-
-if.then205: ; preds = %while.body197
- br label %while.cond191.outer
-
-if.then216: ; preds = %land.rhs, %while.cond191
- br i1 undef, label %if.else, label %if.then221
-
-if.then221: ; preds = %if.then216
- unreachable
-
-if.else: ; preds = %if.then216
- br i1 undef, label %if.then266, label %if.end340
-
-if.then266: ; preds = %if.else
- switch i32 undef, label %if.else329 [
- i32 17, label %if.then285
- i32 19, label %if.then285
- i32 18, label %if.then285
- i32 15, label %if.then285
- ]
-
-if.then285: ; preds = %if.then266, %if.then266, %if.then266, %if.then266
- br i1 undef, label %if.then317, label %if.else324
-
-if.then317: ; preds = %if.then285
- br label %if.end340
-
-if.else324: ; preds = %if.then285
- unreachable
-
-if.else329: ; preds = %if.then266
- unreachable
-
-if.end340: ; preds = %if.then317, %if.else
- unreachable
-
-if.end591: ; preds = %if.end126
- br i1 undef, label %cond.end, label %cond.false
-
-cond.false: ; preds = %if.end591
- unreachable
-
-cond.end: ; preds = %if.end591
- ret void
-}
diff --git a/llvm/test/Transforms/LoopSimplify/single-backedge.ll b/llvm/test/Transforms/LoopSimplify/single-backedge.ll
deleted file mode 100644
index 7739b33d0de..00000000000
--- a/llvm/test/Transforms/LoopSimplify/single-backedge.ll
+++ /dev/null
@@ -1,44 +0,0 @@
-; The loop canonicalization pass should guarantee that there is one backedge
-; for all loops. This allows the -indvars pass to recognize the %IV
-; induction variable in this testcase.
-
-; RUN: opt < %s -indvars -S | FileCheck %s
-; CHECK: Loop.backedge:
-; CHECK-NOT: br
-; CHECK: br label %Loop, !dbg [[BACKEDGE_LOC:![0-9]+]]
-
-; CHECK: [[BACKEDGE_LOC]] = !DILocation(line: 101, column: 1, scope: !{{.*}})
-
-define i32 @test(i1 %C) {
-; <label>:0
- br label %Loop, !dbg !6
-Loop: ; preds = %BE2, %BE1, %0
- %IV = phi i32 [ 1, %0 ], [ %IV2, %BE1 ], [ %IV2, %BE2 ] ; <i32> [#uses=2]
- store i32 %IV, i32* null, !dbg !7
- %IV2 = add i32 %IV, 2, !dbg !8 ; <i32> [#uses=2]
- br i1 %C, label %BE1, label %BE2, !dbg !9
-BE1: ; preds = %Loop
- br label %Loop, !dbg !10
-BE2: ; preds = %n br label %Loop
- br label %Loop, !dbg !11
-}
-
-!llvm.module.flags = !{!0, !1}
-!llvm.dbg.cu = !{!12}
-!0 = !{i32 2, !"Dwarf Version", i32 4}
-!1 = !{i32 2, !"Debug Info Version", i32 3}
-
-!2 = !{}
-!3 = !DISubroutineType(types: !2)
-!4 = !DIFile(filename: "atomic.cpp", directory: "/tmp")
-!5 = distinct !DISubprogram(name: "test", scope: !4, file: !4, line: 99, type: !3, isLocal: false, isDefinition: true, scopeLine: 100, flags: DIFlagPrototyped, isOptimized: false, unit: !12, retainedNodes: !2)
-!6 = !DILocation(line: 100, column: 1, scope: !5)
-!7 = !DILocation(line: 101, column: 1, scope: !5)
-!8 = !DILocation(line: 102, column: 1, scope: !5)
-!9 = !DILocation(line: 103, column: 1, scope: !5)
-!10 = !DILocation(line: 104, column: 1, scope: !5)
-!11 = !DILocation(line: 105, column: 1, scope: !5)
-!12 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
- file: !4,
- isOptimized: true, flags: "-O2",
- splitDebugFilename: "abc.debug", emissionKind: 2)
diff --git a/llvm/test/Transforms/LoopSimplify/unreachable-loop-pred.ll b/llvm/test/Transforms/LoopSimplify/unreachable-loop-pred.ll
deleted file mode 100644
index 1e92ee4ee3b..00000000000
--- a/llvm/test/Transforms/LoopSimplify/unreachable-loop-pred.ll
+++ /dev/null
@@ -1,69 +0,0 @@
-; RUN: opt -S -loop-simplify -disable-output -verify-loop-info -verify-dom-info < %s
-; PR5235
-
-; When loopsimplify inserts a preheader for this loop, it should add the new
-; block to the enclosing loop and not get confused by the unreachable
-; bogus loop entry.
-
-define void @is_extract_cab() nounwind {
-entry:
- br label %header
-
-header: ; preds = %if.end206, %cond.end66, %if.end23
- br label %while.body115
-
-while.body115: ; preds = %9, %if.end192, %if.end101
- br i1 undef, label %header, label %while.body115
-
-foo:
- br label %while.body115
-}
-
-; When loopsimplify generates dedicated exit block for blocks that are landing
-; pads (i.e. innerLoopExit in this test), we should not get confused with the
-; unreachable pred (unreachableB) to innerLoopExit.
-define align 8 void @baz(i32 %trip) personality i32* ()* @wobble {
-entry:
- br label %outerHeader
-
-outerHeader:
- invoke void @foo()
- to label %innerPreheader unwind label %innerLoopExit
-
-innerPreheader:
- br label %innerH
-
-innerH:
- %tmp50 = invoke i8 * undef()
- to label %innerLatch unwind label %innerLoopExit
-
-innerLatch:
- %cmp = icmp slt i32 %trip, 42
- br i1 %cmp, label %innerH, label %retblock
-
-unreachableB: ; No predecessors!
- %tmp62 = invoke i8 * undef()
- to label %retblock unwind label %innerLoopExit
-
-; undedicated exit block (preds from inner and outer loop)
-; Also has unreachableB as pred.
-innerLoopExit:
- %tmp65 = landingpad { i8*, i32 }
- cleanup
- invoke void @foo()
- to label %outerHeader unwind label %unwindblock
-
-unwindblock:
- %tmp67 = landingpad { i8*, i32 }
- cleanup
- ret void
-
-retblock:
- ret void
-}
-
-; Function Attrs: nounwind
-declare i32* @wobble()
-
-; Function Attrs: uwtable
-declare void @foo()
OpenPOWER on IntegriCloud