diff options
| author | Eric Christopher <echristo@gmail.com> | 2019-04-17 02:12:23 +0000 |
|---|---|---|
| committer | Eric Christopher <echristo@gmail.com> | 2019-04-17 02:12:23 +0000 |
| commit | a86343512845c9c1fdbac865fea88aa5fce7142a (patch) | |
| tree | 666fc6353de19ad8b00e56b67edd33f24104e4a7 /llvm/test/Transforms/LCSSA | |
| parent | 7f8ca6e3679b3af951cb7a4b1377edfaa3244b93 (diff) | |
| download | bcm5719-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/LCSSA')
19 files changed, 0 insertions, 1828 deletions
diff --git a/llvm/test/Transforms/LCSSA/2006-06-03-IncorrectIDFPhis.ll b/llvm/test/Transforms/LCSSA/2006-06-03-IncorrectIDFPhis.ll deleted file mode 100644 index 773cd890f89..00000000000 --- a/llvm/test/Transforms/LCSSA/2006-06-03-IncorrectIDFPhis.ll +++ /dev/null @@ -1,22 +0,0 @@ -; RUN: opt < %s -loop-simplify -lcssa -S | FileCheck %s - - %struct.SetJmpMapEntry = type { i8*, i32, %struct.SetJmpMapEntry* } - -define void @__llvm_sjljeh_try_catching_longjmp_exception() { -; CHECK-LABEL: @__llvm_sjljeh_try_catching_longjmp_exception -entry: - br i1 false, label %UnifiedReturnBlock, label %no_exit -no_exit: ; preds = %endif, %entry - %SJE.0.0 = phi %struct.SetJmpMapEntry* [ %tmp.24, %endif ], [ null, %entry ] ; <%struct.SetJmpMapEntry*> [#uses=1] - br i1 false, label %then, label %endif -then: ; preds = %no_exit -; CHECK: %SJE.0.0.lcssa = phi %struct.SetJmpMapEntry - %tmp.20 = getelementptr %struct.SetJmpMapEntry, %struct.SetJmpMapEntry* %SJE.0.0, i32 0, i32 1 ; <i32*> [#uses=0] - ret void -endif: ; preds = %no_exit - %tmp.24 = load %struct.SetJmpMapEntry*, %struct.SetJmpMapEntry** null ; <%struct.SetJmpMapEntry*> [#uses=1] - br i1 false, label %UnifiedReturnBlock, label %no_exit -UnifiedReturnBlock: ; preds = %endif, %entry - ret void -} - diff --git a/llvm/test/Transforms/LCSSA/2006-06-12-MultipleExitsSameBlock.ll b/llvm/test/Transforms/LCSSA/2006-06-12-MultipleExitsSameBlock.ll deleted file mode 100644 index 5f9fd2633c8..00000000000 --- a/llvm/test/Transforms/LCSSA/2006-06-12-MultipleExitsSameBlock.ll +++ /dev/null @@ -1,28 +0,0 @@ -; RUN: opt < %s -lcssa -S | FileCheck %s -; RUN: opt < %s -passes=lcssa -S | FileCheck %s - -declare i1 @c1() - -declare i1 @c2() - -define i32 @foo() { -; CHECK-LABEL: @foo -entry: - br label %loop_begin -loop_begin: ; preds = %loop_body.2, %entry - br i1 true, label %loop_body.1, label %loop_exit2 -loop_body.1: ; preds = %loop_begin - %X.1 = add i32 0, 1 ; <i32> [#uses=1] - %rel.1 = call i1 @c1( ) ; <i1> [#uses=1] - br i1 %rel.1, label %loop_exit, label %loop_body.2 -loop_body.2: ; preds = %loop_body.1 - %rel.2 = call i1 @c2( ) ; <i1> [#uses=1] - br i1 %rel.2, label %loop_exit, label %loop_begin -loop_exit: ; preds = %loop_body.2, %loop_body.1 -; CHECK: %X.1.lcssa = phi - ret i32 %X.1 -loop_exit2: ; preds = %loop_begin - ret i32 1 -; CHECK-NOT: %X.1.lcssa1 -} - diff --git a/llvm/test/Transforms/LCSSA/2006-07-09-NoDominator.ll b/llvm/test/Transforms/LCSSA/2006-07-09-NoDominator.ll deleted file mode 100644 index 786744401d0..00000000000 --- a/llvm/test/Transforms/LCSSA/2006-07-09-NoDominator.ll +++ /dev/null @@ -1,25 +0,0 @@ -; RUN: opt < %s -lcssa -; RUN: opt < %s -passes=lcssa - - %struct.SetJmpMapEntry = type { i8*, i32, %struct.SetJmpMapEntry* } - -define void @__llvm_sjljeh_try_catching_longjmp_exception() { -entry: - br label %loopentry -loopentry: ; preds = %endif, %entry - %SJE.0 = phi %struct.SetJmpMapEntry* [ null, %entry ], [ %tmp.25, %endif ] ; <%struct.SetJmpMapEntry*> [#uses=1] - br i1 false, label %no_exit, label %loopexit -no_exit: ; preds = %loopentry - br i1 false, label %then, label %endif -then: ; preds = %no_exit - %tmp.21 = getelementptr %struct.SetJmpMapEntry, %struct.SetJmpMapEntry* %SJE.0, i32 0, i32 1 ; <i32*> [#uses=0] - br label %return -endif: ; preds = %no_exit - %tmp.25 = load %struct.SetJmpMapEntry*, %struct.SetJmpMapEntry** null ; <%struct.SetJmpMapEntry*> [#uses=1] - br label %loopentry -loopexit: ; preds = %loopentry - br label %return -return: ; preds = %loopexit, %then - ret void -} - diff --git a/llvm/test/Transforms/LCSSA/2006-10-31-UnreachableBlock-2.ll b/llvm/test/Transforms/LCSSA/2006-10-31-UnreachableBlock-2.ll deleted file mode 100644 index 3ba8d18b00c..00000000000 --- a/llvm/test/Transforms/LCSSA/2006-10-31-UnreachableBlock-2.ll +++ /dev/null @@ -1,145 +0,0 @@ -; RUN: opt < %s -lcssa -disable-output -verify-dom-info -verify-loop-info -; PR977 -; END. -declare i32 @opost_block() - -define void @write_chan() { -entry: - br i1 false, label %shortcirc_next.0, label %shortcirc_done.0 -shortcirc_next.0: ; preds = %entry - br label %shortcirc_done.0 -shortcirc_done.0: ; preds = %shortcirc_next.0, %entry - br i1 false, label %shortcirc_next.1, label %shortcirc_done.1 -shortcirc_next.1: ; preds = %shortcirc_done.0 - br label %shortcirc_done.1 -shortcirc_done.1: ; preds = %shortcirc_next.1, %shortcirc_done.0 - br i1 false, label %then.0, label %endif.0 -then.0: ; preds = %shortcirc_done.1 - br i1 false, label %then.1, label %endif.1 -then.1: ; preds = %then.0 - br label %return -after_ret.0: ; No predecessors! - br label %endif.1 -endif.1: ; preds = %after_ret.0, %then.0 - br label %endif.0 -endif.0: ; preds = %endif.1, %shortcirc_done.1 - br label %loopentry.0 -loopentry.0: ; preds = %endif.12, %endif.0 - br i1 false, label %then.2, label %endif.2 -then.2: ; preds = %loopentry.0 - br label %loopexit.0 -dead_block_after_break.0: ; No predecessors! - br label %endif.2 -endif.2: ; preds = %dead_block_after_break.0, %loopentry.0 - br i1 false, label %shortcirc_done.2, label %shortcirc_next.2 -shortcirc_next.2: ; preds = %endif.2 - br i1 false, label %shortcirc_next.3, label %shortcirc_done.3 -shortcirc_next.3: ; preds = %shortcirc_next.2 - br label %shortcirc_done.3 -shortcirc_done.3: ; preds = %shortcirc_next.3, %shortcirc_next.2 - br label %shortcirc_done.2 -shortcirc_done.2: ; preds = %shortcirc_done.3, %endif.2 - br i1 false, label %then.3, label %endif.3 -then.3: ; preds = %shortcirc_done.2 - br label %loopexit.0 -dead_block_after_break.1: ; No predecessors! - br label %endif.3 -endif.3: ; preds = %dead_block_after_break.1, %shortcirc_done.2 - br i1 false, label %shortcirc_next.4, label %shortcirc_done.4 -shortcirc_next.4: ; preds = %endif.3 - br label %shortcirc_done.4 -shortcirc_done.4: ; preds = %shortcirc_next.4, %endif.3 - br i1 false, label %then.4, label %else -then.4: ; preds = %shortcirc_done.4 - br label %loopentry.1 -loopentry.1: ; preds = %endif.8, %then.4 - br i1 false, label %no_exit, label %loopexit.1 -no_exit: ; preds = %loopentry.1 - %tmp.94 = call i32 @opost_block( ) ; <i32> [#uses=1] - br i1 false, label %then.5, label %endif.5 -then.5: ; preds = %no_exit - br i1 false, label %then.6, label %endif.6 -then.6: ; preds = %then.5 - br label %loopexit.1 -dead_block_after_break.2: ; No predecessors! - br label %endif.6 -endif.6: ; preds = %dead_block_after_break.2, %then.5 - br label %break_out -dead_block_after_goto.0: ; No predecessors! - br label %endif.5 -endif.5: ; preds = %dead_block_after_goto.0, %no_exit - br i1 false, label %then.7, label %endif.7 -then.7: ; preds = %endif.5 - br label %loopexit.1 -dead_block_after_break.3: ; No predecessors! - br label %endif.7 -endif.7: ; preds = %dead_block_after_break.3, %endif.5 - switch i32 1, label %switchexit [ - i32 4, label %label.2 - i32 2, label %label.1 - i32 1, label %label.0 - ] -label.0: ; preds = %endif.7 - br label %switchexit -dead_block_after_break.4: ; No predecessors! - br label %label.1 -label.1: ; preds = %dead_block_after_break.4, %endif.7 - br label %switchexit -dead_block_after_break.5: ; No predecessors! - br label %label.2 -label.2: ; preds = %dead_block_after_break.5, %endif.7 - br label %switchexit -dead_block_after_break.6: ; No predecessors! - br label %switchexit -switchexit: ; preds = %dead_block_after_break.6, %label.2, %label.1, %label.0, %endif.7 - br i1 false, label %then.8, label %endif.8 -then.8: ; preds = %switchexit - br label %loopexit.1 -dead_block_after_break.7: ; No predecessors! - br label %endif.8 -endif.8: ; preds = %dead_block_after_break.7, %switchexit - br label %loopentry.1 -loopexit.1: ; preds = %then.8, %then.7, %then.6, %loopentry.1 - br i1 false, label %then.9, label %endif.9 -then.9: ; preds = %loopexit.1 - br label %endif.9 -endif.9: ; preds = %then.9, %loopexit.1 - br label %endif.4 -else: ; preds = %shortcirc_done.4 - br i1 false, label %then.10, label %endif.10 -then.10: ; preds = %else - br label %break_out -dead_block_after_goto.1: ; No predecessors! - br label %endif.10 -endif.10: ; preds = %dead_block_after_goto.1, %else - br label %endif.4 -endif.4: ; preds = %endif.10, %endif.9 - br i1 false, label %then.11, label %endif.11 -then.11: ; preds = %endif.4 - br label %loopexit.0 -dead_block_after_break.8: ; No predecessors! - br label %endif.11 -endif.11: ; preds = %dead_block_after_break.8, %endif.4 - br i1 false, label %then.12, label %endif.12 -then.12: ; preds = %endif.11 - br label %loopexit.0 -dead_block_after_break.9: ; No predecessors! - br label %endif.12 -endif.12: ; preds = %dead_block_after_break.9, %endif.11 - br label %loopentry.0 -loopexit.0: ; preds = %then.12, %then.11, %then.3, %then.2 - br label %break_out -break_out: ; preds = %loopexit.0, %then.10, %endif.6 - %retval.3 = phi i32 [ 0, %loopexit.0 ], [ %tmp.94, %endif.6 ], [ 0, %then.10 ] ; <i32> [#uses=0] - br i1 false, label %cond_true, label %cond_false -cond_true: ; preds = %break_out - br label %cond_continue -cond_false: ; preds = %break_out - br label %cond_continue -cond_continue: ; preds = %cond_false, %cond_true - br label %return -after_ret.1: ; No predecessors! - br label %return -return: ; preds = %after_ret.1, %cond_continue, %then.1 - ret void -} diff --git a/llvm/test/Transforms/LCSSA/2006-10-31-UnreachableBlock.ll b/llvm/test/Transforms/LCSSA/2006-10-31-UnreachableBlock.ll deleted file mode 100644 index 66760c565b8..00000000000 --- a/llvm/test/Transforms/LCSSA/2006-10-31-UnreachableBlock.ll +++ /dev/null @@ -1,185 +0,0 @@ -; RUN: opt < %s -lcssa -disable-output -; RUN: opt < %s -passes=lcssa -disable-output -; PR977 -; END. - -define void @process_backlog() { -entry: - br label %loopentry.preheader -loopentry.preheader: ; preds = %dead_block_after_break, %entry - %work.0.ph = phi i32 [ %inc, %dead_block_after_break ], [ 0, %entry ] ; <i32> [#uses=0] - br label %loopentry -loopentry: ; preds = %endif.1, %loopentry.preheader - br i1 false, label %then.i, label %loopentry.__skb_dequeue67.exit_crit_edge -loopentry.__skb_dequeue67.exit_crit_edge: ; preds = %loopentry - br label %__skb_dequeue67.exit -then.i: ; preds = %loopentry - br label %__skb_dequeue67.exit -__skb_dequeue67.exit: ; preds = %then.i, %loopentry.__skb_dequeue67.exit_crit_edge - br i1 false, label %then.0, label %__skb_dequeue67.exit.endif.0_crit_edge -__skb_dequeue67.exit.endif.0_crit_edge: ; preds = %__skb_dequeue67.exit - br label %endif.0 -then.0: ; preds = %__skb_dequeue67.exit - br label %job_done -dead_block_after_goto: ; No predecessors! - unreachable -endif.0: ; preds = %__skb_dequeue67.exit.endif.0_crit_edge - br i1 false, label %then.0.i, label %endif.0.endif.0.i_crit_edge -endif.0.endif.0.i_crit_edge: ; preds = %endif.0 - br label %endif.0.i -then.0.i: ; preds = %endif.0 - br label %endif.0.i -endif.0.i: ; preds = %then.0.i, %endif.0.endif.0.i_crit_edge - br i1 false, label %then.i.i, label %endif.0.i.skb_bond.exit.i_crit_edge -endif.0.i.skb_bond.exit.i_crit_edge: ; preds = %endif.0.i - br label %skb_bond.exit.i -then.i.i: ; preds = %endif.0.i - br label %skb_bond.exit.i -skb_bond.exit.i: ; preds = %then.i.i, %endif.0.i.skb_bond.exit.i_crit_edge - br label %loopentry.0.i -loopentry.0.i: ; preds = %loopentry.0.i.backedge, %skb_bond.exit.i - br i1 false, label %loopentry.0.i.no_exit.0.i_crit_edge, label %loopentry.0.i.loopexit.0.i_crit_edge -loopentry.0.i.loopexit.0.i_crit_edge: ; preds = %loopentry.0.i - br label %loopexit.0.i -loopentry.0.i.no_exit.0.i_crit_edge: ; preds = %loopentry.0.i - br label %no_exit.0.i -no_exit.0.i: ; preds = %then.3.i.no_exit.0.i_crit_edge, %loopentry.0.i.no_exit.0.i_crit_edge - br i1 false, label %no_exit.0.i.shortcirc_done.0.i_crit_edge, label %shortcirc_next.0.i -no_exit.0.i.shortcirc_done.0.i_crit_edge: ; preds = %no_exit.0.i - br label %shortcirc_done.0.i -shortcirc_next.0.i: ; preds = %no_exit.0.i - br label %shortcirc_done.0.i -shortcirc_done.0.i: ; preds = %shortcirc_next.0.i, %no_exit.0.i.shortcirc_done.0.i_crit_edge - br i1 false, label %then.1.i, label %endif.1.i -then.1.i: ; preds = %shortcirc_done.0.i - br i1 false, label %then.2.i, label %then.1.i.endif.2.i_crit_edge -then.1.i.endif.2.i_crit_edge: ; preds = %then.1.i - br label %endif.2.i -then.2.i: ; preds = %then.1.i - br i1 false, label %then.3.i, label %else.0.i -then.3.i: ; preds = %then.2.i - br i1 false, label %then.3.i.no_exit.0.i_crit_edge, label %then.3.i.loopexit.0.i_crit_edge -then.3.i.loopexit.0.i_crit_edge: ; preds = %then.3.i - br label %loopexit.0.i -then.3.i.no_exit.0.i_crit_edge: ; preds = %then.3.i - br label %no_exit.0.i -else.0.i: ; preds = %then.2.i - br label %endif.2.i -endif.3.i: ; No predecessors! - unreachable -endif.2.i: ; preds = %else.0.i, %then.1.i.endif.2.i_crit_edge - br label %loopentry.0.i.backedge -endif.1.i: ; preds = %shortcirc_done.0.i - br label %loopentry.0.i.backedge -loopentry.0.i.backedge: ; preds = %endif.1.i, %endif.2.i - br label %loopentry.0.i -loopexit.0.i: ; preds = %then.3.i.loopexit.0.i_crit_edge, %loopentry.0.i.loopexit.0.i_crit_edge - br label %loopentry.1.i -loopentry.1.i: ; preds = %loopentry.1.i.backedge, %loopexit.0.i - br i1 false, label %loopentry.1.i.no_exit.1.i_crit_edge, label %loopentry.1.i.loopexit.1.i_crit_edge -loopentry.1.i.loopexit.1.i_crit_edge: ; preds = %loopentry.1.i - br label %loopexit.1.i -loopentry.1.i.no_exit.1.i_crit_edge: ; preds = %loopentry.1.i - br label %no_exit.1.i -no_exit.1.i: ; preds = %then.6.i.no_exit.1.i_crit_edge, %loopentry.1.i.no_exit.1.i_crit_edge - br i1 false, label %shortcirc_next.1.i, label %no_exit.1.i.shortcirc_done.1.i_crit_edge -no_exit.1.i.shortcirc_done.1.i_crit_edge: ; preds = %no_exit.1.i - br label %shortcirc_done.1.i -shortcirc_next.1.i: ; preds = %no_exit.1.i - br i1 false, label %shortcirc_next.1.i.shortcirc_done.2.i_crit_edge, label %shortcirc_next.2.i -shortcirc_next.1.i.shortcirc_done.2.i_crit_edge: ; preds = %shortcirc_next.1.i - br label %shortcirc_done.2.i -shortcirc_next.2.i: ; preds = %shortcirc_next.1.i - br label %shortcirc_done.2.i -shortcirc_done.2.i: ; preds = %shortcirc_next.2.i, %shortcirc_next.1.i.shortcirc_done.2.i_crit_edge - br label %shortcirc_done.1.i -shortcirc_done.1.i: ; preds = %shortcirc_done.2.i, %no_exit.1.i.shortcirc_done.1.i_crit_edge - br i1 false, label %then.4.i, label %endif.4.i -then.4.i: ; preds = %shortcirc_done.1.i - br i1 false, label %then.5.i, label %then.4.i.endif.5.i_crit_edge -then.4.i.endif.5.i_crit_edge: ; preds = %then.4.i - br label %endif.5.i -then.5.i: ; preds = %then.4.i - br i1 false, label %then.6.i, label %else.1.i -then.6.i: ; preds = %then.5.i - br i1 false, label %then.6.i.no_exit.1.i_crit_edge, label %then.6.i.loopexit.1.i_crit_edge -then.6.i.loopexit.1.i_crit_edge: ; preds = %then.6.i - br label %loopexit.1.i -then.6.i.no_exit.1.i_crit_edge: ; preds = %then.6.i - br label %no_exit.1.i -else.1.i: ; preds = %then.5.i - br label %endif.5.i -endif.6.i: ; No predecessors! - unreachable -endif.5.i: ; preds = %else.1.i, %then.4.i.endif.5.i_crit_edge - br label %loopentry.1.i.backedge -endif.4.i: ; preds = %shortcirc_done.1.i - br label %loopentry.1.i.backedge -loopentry.1.i.backedge: ; preds = %endif.4.i, %endif.5.i - br label %loopentry.1.i -loopexit.1.i: ; preds = %then.6.i.loopexit.1.i_crit_edge, %loopentry.1.i.loopexit.1.i_crit_edge - br i1 false, label %then.7.i, label %else.2.i -then.7.i: ; preds = %loopexit.1.i - br i1 false, label %then.8.i, label %else.3.i -then.8.i: ; preds = %then.7.i - br label %netif_receive_skb.exit -else.3.i: ; preds = %then.7.i - br label %netif_receive_skb.exit -endif.8.i: ; No predecessors! - unreachable -else.2.i: ; preds = %loopexit.1.i - br i1 false, label %else.2.i.shortcirc_done.i.i_crit_edge, label %shortcirc_next.i.i -else.2.i.shortcirc_done.i.i_crit_edge: ; preds = %else.2.i - br label %shortcirc_done.i.i -shortcirc_next.i.i: ; preds = %else.2.i - br label %shortcirc_done.i.i -shortcirc_done.i.i: ; preds = %shortcirc_next.i.i, %else.2.i.shortcirc_done.i.i_crit_edge - br i1 false, label %then.i1.i, label %shortcirc_done.i.i.kfree_skb65.exit.i_crit_edge -shortcirc_done.i.i.kfree_skb65.exit.i_crit_edge: ; preds = %shortcirc_done.i.i - br label %kfree_skb65.exit.i -then.i1.i: ; preds = %shortcirc_done.i.i - br label %kfree_skb65.exit.i -kfree_skb65.exit.i: ; preds = %then.i1.i, %shortcirc_done.i.i.kfree_skb65.exit.i_crit_edge - br label %netif_receive_skb.exit -netif_receive_skb.exit: ; preds = %kfree_skb65.exit.i, %else.3.i, %then.8.i - br i1 false, label %then.i1, label %netif_receive_skb.exit.dev_put69.exit_crit_edge -netif_receive_skb.exit.dev_put69.exit_crit_edge: ; preds = %netif_receive_skb.exit - br label %dev_put69.exit -then.i1: ; preds = %netif_receive_skb.exit - br label %dev_put69.exit -dev_put69.exit: ; preds = %then.i1, %netif_receive_skb.exit.dev_put69.exit_crit_edge - %inc = add i32 0, 1 ; <i32> [#uses=1] - br i1 false, label %dev_put69.exit.shortcirc_done_crit_edge, label %shortcirc_next -dev_put69.exit.shortcirc_done_crit_edge: ; preds = %dev_put69.exit - br label %shortcirc_done -shortcirc_next: ; preds = %dev_put69.exit - br label %shortcirc_done -shortcirc_done: ; preds = %shortcirc_next, %dev_put69.exit.shortcirc_done_crit_edge - br i1 false, label %then.1, label %endif.1 -then.1: ; preds = %shortcirc_done - ret void -dead_block_after_break: ; No predecessors! - br label %loopentry.preheader -endif.1: ; preds = %shortcirc_done - br label %loopentry -loopexit: ; No predecessors! - unreachable -after_ret.0: ; No predecessors! - br label %job_done -job_done: ; preds = %after_ret.0, %then.0 - br label %loopentry.i -loopentry.i: ; preds = %no_exit.i, %job_done - br i1 false, label %no_exit.i, label %clear_bit62.exit -no_exit.i: ; preds = %loopentry.i - br label %loopentry.i -clear_bit62.exit: ; preds = %loopentry.i - br i1 false, label %then.2, label %endif.2 -then.2: ; preds = %clear_bit62.exit - ret void -endif.2: ; preds = %clear_bit62.exit - ret void -after_ret.1: ; No predecessors! - ret void -return: ; No predecessors! - unreachable -} diff --git a/llvm/test/Transforms/LCSSA/2007-07-12-LICM-2.ll b/llvm/test/Transforms/LCSSA/2007-07-12-LICM-2.ll deleted file mode 100644 index f5d3f7e2b1c..00000000000 --- a/llvm/test/Transforms/LCSSA/2007-07-12-LICM-2.ll +++ /dev/null @@ -1,17 +0,0 @@ -; RUN: opt < %s -loop-rotate -licm -loop-unswitch -disable-output -define i32 @main(i32 %argc, i8** %argv) { -entry: - br label %bb7 - -bb7: ; preds = %bb7, %entry - %tmp39 = load <4 x float>, <4 x float>* null ; <<4 x float>> [#uses=1] - %tmp40 = fadd <4 x float> %tmp39, < float 2.000000e+00, float 3.000000e+00, float 1.000000e+00, float 0.000000e+00 > ; <<4 x float>> [#uses=1] - %tmp43 = fadd <4 x float> %tmp40, < float 1.000000e+00, float 1.000000e+00, float 0.000000e+00, float 2.000000e+00 > ; <<4 x float>> [#uses=1] - %tmp46 = fadd <4 x float> %tmp43, < float 3.000000e+00, float 0.000000e+00, float 2.000000e+00, float 4.000000e+00 > ; <<4 x float>> [#uses=1] - %tmp49 = fadd <4 x float> %tmp46, < float 0.000000e+00, float 4.000000e+00, float 6.000000e+00, float 1.000000e+00 > ; <<4 x float>> [#uses=1] - store <4 x float> %tmp49, <4 x float>* null - br i1 false, label %bb7, label %bb56 - -bb56: ; preds = %bb7 - ret i32 0 -} diff --git a/llvm/test/Transforms/LCSSA/2007-07-12-LICM-3.ll b/llvm/test/Transforms/LCSSA/2007-07-12-LICM-3.ll deleted file mode 100644 index 689b6eaff8e..00000000000 --- a/llvm/test/Transforms/LCSSA/2007-07-12-LICM-3.ll +++ /dev/null @@ -1,24 +0,0 @@ -; RUN: opt < %s -loop-rotate -licm -loop-unswitch -disable-output - -define i32 @main(i32 %argc, i8** %argv) { -entry: - br label %bb - -bb: ; preds = %bb56, %entry - br label %bb7 - -bb7: ; preds = %bb7, %bb - %tmp39 = load <4 x float>, <4 x float>* null ; <<4 x float>> [#uses=1] - %tmp40 = fadd <4 x float> %tmp39, < float 2.000000e+00, float 3.000000e+00, float 1.000000e+00, float 0.000000e+00 > ; <<4 x float>> [#uses=1] - %tmp43 = fadd <4 x float> %tmp40, < float 1.000000e+00, float 1.000000e+00, float 0.000000e+00, float 2.000000e+00 > ; <<4 x float>> [#uses=1] - %tmp46 = fadd <4 x float> %tmp43, < float 3.000000e+00, float 0.000000e+00, float 2.000000e+00, float 4.000000e+00 > ; <<4 x float>> [#uses=1] - %tmp49 = fadd <4 x float> %tmp46, < float 0.000000e+00, float 4.000000e+00, float 6.000000e+00, float 1.000000e+00 > ; <<4 x float>> [#uses=1] - store <4 x float> %tmp49, <4 x float>* null - br i1 false, label %bb7, label %bb56 - -bb56: ; preds = %bb7 - br i1 false, label %bb, label %bb64 - -bb64: ; preds = %bb56 - ret i32 0 -} diff --git a/llvm/test/Transforms/LCSSA/2007-07-12-LICM.ll b/llvm/test/Transforms/LCSSA/2007-07-12-LICM.ll deleted file mode 100644 index f1785edc2af..00000000000 --- a/llvm/test/Transforms/LCSSA/2007-07-12-LICM.ll +++ /dev/null @@ -1,14 +0,0 @@ -; RUN: opt < %s -loop-rotate -licm -loop-unswitch -disable-output -define i32 @main(i32 %argc, i8** %argv) { -entry: - br label %bb7 - -bb7: ; preds = %bb7, %entry - %tmp39 = load <4 x float>, <4 x float>* null ; <<4 x float>> [#uses=1] - %tmp40 = fadd <4 x float> %tmp39, < float 2.000000e+00, float 3.000000e+00, float 1.000000e+00, float 0.000000e+00 > ; <<4 x float>> [#uses=0] - store <4 x float> zeroinitializer, <4 x float>* null - br i1 false, label %bb7, label %bb56 - -bb56: ; preds = %bb7 - ret i32 0 -} diff --git a/llvm/test/Transforms/LCSSA/avoid-intrinsics-in-catchswitch.ll b/llvm/test/Transforms/LCSSA/avoid-intrinsics-in-catchswitch.ll deleted file mode 100644 index 55357f1fee5..00000000000 --- a/llvm/test/Transforms/LCSSA/avoid-intrinsics-in-catchswitch.ll +++ /dev/null @@ -1,133 +0,0 @@ -; RUN: opt < %s -debugify -licm -S -o /dev/null -; -; The following test is from https://bugs.llvm.org/show_bug.cgi?id=36238 -; This test should pass (not assert or fault). The error that originally -; provoked this test was regarding the LCSSA pass trying to insert a dbg.value -; intrinsic into a catchswitch block. - -target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-pc-windows-msvc19.11.0" - -%struct.e = type { i32 } -%struct.d = type { i8 } -%class.f = type { %class.b } -%class.b = type { i8 } -%struct.k = type opaque - -@"\01?l@@3HA" = local_unnamed_addr global i32 0, align 4 - -define i32 @"\01?m@@YAJXZ"() personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*) { -entry: - %n = alloca %struct.e, align 4 - %db = alloca i32, align 4 - %o = alloca %struct.d, align 1 - %q = alloca i8*, align 8 - %r = alloca i32, align 4 - %u = alloca i64, align 8 - %s = alloca %class.f, align 1 - %offset = alloca i64, align 8 - %t = alloca i64, align 8 - %status = alloca i32, align 4 - call void (...) @llvm.localescape(%class.f* nonnull %s, i32* nonnull %status) - %0 = bitcast %struct.e* %n to i8* - %1 = bitcast i32* %db to i8* - %2 = getelementptr inbounds %struct.d, %struct.d* %o, i64 0, i32 0 - %3 = bitcast i8** %q to i8* - %4 = bitcast i32* %r to i8* - %5 = bitcast i64* %u to i8* - %6 = getelementptr inbounds %class.f, %class.f* %s, i64 0, i32 0, i32 0 - %7 = load i32, i32* @"\01?l@@3HA", align 4, !tbaa !3 - %call = call %class.f* @"\01??0f@@QEAA@H@Z"(%class.f* nonnull %s, i32 %7) - %8 = bitcast i64* %offset to i8* - %9 = bitcast i64* %t to i8* - %10 = bitcast i32* %status to i8* - %11 = bitcast %class.f* %s to %struct.d* - %c = getelementptr inbounds %struct.e, %struct.e* %n, i64 0, i32 0 - br label %for.cond - -for.cond: ; preds = %cleanup.cont, %entry - %p.0 = phi i32 [ undef, %entry ], [ %call2, %cleanup.cont ] - invoke void @"\01?h@@YAXPEAH0HPEAIPEAPEAEPEA_K33PEAUd@@4@Z"(i32* nonnull %db, i32* nonnull %c, i32 undef, i32* nonnull %r, i8** nonnull %q, i64* nonnull %u, i64* nonnull %offset, i64* nonnull %t, %struct.d* nonnull %11, %struct.d* nonnull %o) - to label %__try.cont unwind label %catch.dispatch - -catch.dispatch: ; preds = %for.cond - %12 = catchswitch within none [label %__except.ret] unwind label %ehcleanup - -__except.ret: ; preds = %catch.dispatch - %13 = catchpad within %12 [i8* bitcast (i32 (i8*, i8*)* @"\01?filt$0@0@m@@" to i8*)] - catchret from %13 to label %cleanup7 - -__try.cont: ; preds = %for.cond - %tobool = icmp eq i32 %p.0, 0 - br i1 %tobool, label %if.end, label %cleanup7 - -if.end: ; preds = %__try.cont - %call2 = invoke i32 @"\01?a@@YAJXZ"() - to label %cleanup.cont unwind label %ehcleanup - -cleanup.cont: ; preds = %if.end - br label %for.cond - -ehcleanup: ; preds = %if.end, %catch.dispatch - %14 = cleanuppad within none [] - %g.i = getelementptr inbounds %class.f, %class.f* %s, i64 0, i32 0 - call void @"\01??1b@@QEAA@XZ"(%class.b* nonnull %g.i) [ "funclet"(token %14) ] - cleanupret from %14 unwind to caller - -cleanup7: ; preds = %__try.cont, %__except.ret - %p.2.ph = phi i32 [ 7, %__except.ret ], [ %p.0, %__try.cont ] - %g.i32 = getelementptr inbounds %class.f, %class.f* %s, i64 0, i32 0 - call void @"\01??1b@@QEAA@XZ"(%class.b* nonnull %g.i32) - ret i32 %p.2.ph -} - -declare %class.f* @"\01??0f@@QEAA@H@Z"(%class.f* returned, i32) unnamed_addr - -define internal i32 @"\01?filt$0@0@m@@"(i8* %exception_pointers, i8* %frame_pointer) personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*) { -entry: - %0 = tail call i8* @llvm.eh.recoverfp(i8* bitcast (i32 ()* @"\01?m@@YAJXZ" to i8*), i8* %frame_pointer) - %1 = tail call i8* @llvm.localrecover(i8* bitcast (i32 ()* @"\01?m@@YAJXZ" to i8*), i8* %0, i32 0) - %2 = tail call i8* @llvm.localrecover(i8* bitcast (i32 ()* @"\01?m@@YAJXZ" to i8*), i8* %0, i32 1) - %status = bitcast i8* %2 to i32* - %agg.tmp = alloca %class.f, align 1 - %3 = bitcast i8* %exception_pointers to i32** - %4 = load i32*, i32** %3, align 8 - %5 = load i32, i32* %4, align 4 - %6 = bitcast i8* %exception_pointers to %struct.k* - %7 = getelementptr inbounds %class.f, %class.f* %agg.tmp, i64 0, i32 0, i32 0 - %8 = load i8, i8* %1, align 1 - store i8 %8, i8* %7, align 1 - %call = invoke i32 @"\01?j@@YAJVf@@JPEAUk@@PEAH@Z"(i8 %8, i32 %5, %struct.k* %6, i32* %status) - to label %invoke.cont unwind label %ehcleanup - -invoke.cont: ; preds = %entry - %g.i = getelementptr inbounds %class.f, %class.f* %agg.tmp, i64 0, i32 0 - call void @"\01??1b@@QEAA@XZ"(%class.b* nonnull %g.i) - ret i32 %call - -ehcleanup: ; preds = %entry - %9 = cleanuppad within none [] - %g.i2 = getelementptr inbounds %class.f, %class.f* %agg.tmp, i64 0, i32 0 - call void @"\01??1b@@QEAA@XZ"(%class.b* nonnull %g.i2) [ "funclet"(token %9) ] - cleanupret from %9 unwind to caller -} - -declare i8* @llvm.eh.recoverfp(i8*, i8*) -declare i8* @llvm.localrecover(i8*, i8*, i32) -declare i32 @"\01?j@@YAJVf@@JPEAUk@@PEAH@Z"(i8, i32, %struct.k*, i32*) local_unnamed_addr -declare i32 @__C_specific_handler(...) -declare void @"\01?h@@YAXPEAH0HPEAIPEAPEAEPEA_K33PEAUd@@4@Z"(i32*, i32*, i32, i32*, i8**, i64*, i64*, i64*, %struct.d*, %struct.d*) local_unnamed_addr -declare i32 @"\01?a@@YAJXZ"() local_unnamed_addr -declare void @llvm.localescape(...) -declare void @"\01??1b@@QEAA@XZ"(%class.b*) unnamed_addr - -!llvm.module.flags = !{!0, !1} -!llvm.ident = !{!2} - -!0 = !{i32 1, !"wchar_size", i32 2} -!1 = !{i32 7, !"PIC Level", i32 2} -!2 = !{!"clang"} -!3 = !{!4, !4, i64 0} -!4 = !{!"int", !5, i64 0} -!5 = !{!"omnipotent char", !6, i64 0} -!6 = !{!"Simple C++ TBAA"} diff --git a/llvm/test/Transforms/LCSSA/basictest.ll b/llvm/test/Transforms/LCSSA/basictest.ll deleted file mode 100644 index 7ca552039b6..00000000000 --- a/llvm/test/Transforms/LCSSA/basictest.ll +++ /dev/null @@ -1,30 +0,0 @@ -; RUN: opt < %s -lcssa -S | FileCheck %s -; RUN: opt < %s -passes=lcssa -S | FileCheck %s -; RUN: opt < %s -debugify -lcssa -S | FileCheck -check-prefix=DEBUGIFY %s - -define void @lcssa(i1 %S2) { -; CHECK-LABEL: @lcssa -entry: - br label %loop.interior -loop.interior: ; preds = %post.if, %entry - br i1 %S2, label %if.true, label %if.false -if.true: ; preds = %loop.interior - %X1 = add i32 0, 0 ; <i32> [#uses=1] - br label %post.if -if.false: ; preds = %loop.interior - %X2 = add i32 0, 1 ; <i32> [#uses=1] - br label %post.if -post.if: ; preds = %if.false, %if.true - %X3 = phi i32 [ %X1, %if.true ], [ %X2, %if.false ] ; <i32> [#uses=1] - br i1 %S2, label %loop.exit, label %loop.interior -loop.exit: ; preds = %post.if -; CHECK: %X3.lcssa = phi i32 -; DEBUGIFY: %X3.lcssa = phi i32 {{.*}}, !dbg ![[DbgLoc:[0-9]+]] -; DEBUGIFY-NEXT: call void @llvm.dbg.value(metadata i32 %X3.lcssa -; CHECK: %X4 = add i32 3, %X3.lcssa - %X4 = add i32 3, %X3 ; <i32> [#uses=0] - ret void -} - -; Make sure the lcssa phi has %X3's debug location -; DEBUGIFY: ![[DbgLoc]] = !DILocation(line: 7 diff --git a/llvm/test/Transforms/LCSSA/indirectbr.ll b/llvm/test/Transforms/LCSSA/indirectbr.ll deleted file mode 100644 index 345395bee01..00000000000 --- a/llvm/test/Transforms/LCSSA/indirectbr.ll +++ /dev/null @@ -1,574 +0,0 @@ -; RUN: opt < %s -loop-simplify -lcssa -verify-loop-info -verify-dom-info -S | FileCheck %s - -; LCSSA should work correctly in the case of an indirectbr that exits -; the loop, and the loop has exits with predecessors not within the loop -; (and btw these edges are unsplittable due to the indirectbr). -; PR5437 -define i32 @test0() nounwind { -; CHECK-LABEL: @test0 -entry: - br i1 undef, label %"4", label %"3" - -"3": ; preds = %entry - ret i32 0 - -"4": ; preds = %entry - br i1 undef, label %"6", label %"5" - -"5": ; preds = %"4" - unreachable - -"6": ; preds = %"4" - br i1 undef, label %"10", label %"13" - -"10": ; preds = %"6" - br i1 undef, label %"22", label %"15" - -"13": ; preds = %"6" - unreachable - -"15": ; preds = %"23", %"10" - unreachable - -"22": ; preds = %"10" - br label %"23" - -"23": ; preds = %"1375", %"22" - %0 = phi i32 [ undef, %"22" ], [ %1, %"1375" ] ; <i32> [#uses=1] - indirectbr i8* undef, [label %"15", label %"24", label %"25", label %"26", label %"27", label %"28", label %"29", label %"30", label %"32", label %"32", label %"33", label %"167", label %"173", label %"173", label %"173", label %"173", label %"173", label %"192", label %"193", label %"194", label %"196", label %"206", label %"231", label %"241", label %"251", label %"261", label %"307", label %"353", label %"354", label %"355", label %"361", label %"367", label %"400", label %"433", label %"466", label %"499", label %"509", label %"519", label %"529", label %"571", label %"589", label %"607", label %"635", label %"655", label %"664", label %"671", label %"680", label %"687", label %"692", label %"698", label %"704", label %"715", label %"715", label %"716", label %"725", label %"725", label %"725", label %"725", label %"724", label %"724", label %"724", label %"724", label %"737", label %"737", label %"737", label %"737", label %"761", label %"758", label %"759", label %"760", label %"766", label %"763", label %"764", label %"765", label %"771", label %"768", label %"769", label %"770", label %"780", label %"777", label %"778", label %"779", label %"821", label %"826", label %"831", label %"832", label %"833", label %"836", label %"836", label %"886", label %"905", label %"978", label %"978", label %"1136", label %"1166", label %"1179", label %"1201", label %"1212", label %"1212", label %"1274", label %"1284", label %"1284", label %"1346", label %"1347", label %"1348", label %"1349", label %"1350", label %"1353", label %"1353", label %"1353", label %"1355", label %"1355", label %"1357", label %"1357", label %"1358", label %"1359", label %"1374", label %"1375", label %"1376", label %"1377", label %"1378", label %"1379", label %"1386", label %"1395", label %"1394", label %"1425", label %"1426", label %"1440", label %"1449", label %"1455", label %"1461", label %"1471", label %"1482", label %"1484", label %"1486", label %"1489", label %"1489", label %"1492", label %"1494", label %"1494", label %"1497", label %"1499", label %"1499", label %"1515", label %"1546", label %"1546", label %"1566", label %"1584", label %"1587", label %"1591", label %"1605", label %"1609", label %"1609", label %"1640", label %"1648", label %"1651", label %"1703", label %"1710", label %"1718", label %"1724", label %"1725", label %"1726", label %"1727", label %"1728", label %"1731", label %"1732", label %"1733", label %"1734", label %"1735", label %"1741", label %"1750", label %"1752", label %"1754", label %"1755", label %"1757", label %"1759", label %"1761", label %"1764", label %"1764", label %"1766", label %"1768", label %"1775", label %"1775", label %"1781", label %"1781", label %"1790", label %"1827", label %"1836", label %"1836", label %"1845", label %"1845", label %"1848", label %"1849", label %"1851", label %"1853", label %"1856", label %"1861", label %"1861"] - -"24": ; preds = %"23" - unreachable - -"25": ; preds = %"23" - unreachable - -"26": ; preds = %"23" - unreachable - -"27": ; preds = %"23" - unreachable - -"28": ; preds = %"23" - unreachable - -"29": ; preds = %"23" - unreachable - -"30": ; preds = %"23" - unreachable - -"32": ; preds = %"23", %"23" - unreachable - -"33": ; preds = %"23" - unreachable - -"167": ; preds = %"23" - unreachable - -"173": ; preds = %"23", %"23", %"23", %"23", %"23" - unreachable - -"192": ; preds = %"23" - unreachable - -"193": ; preds = %"23" - unreachable - -"194": ; preds = %"23" - unreachable - -"196": ; preds = %"23" - unreachable - -"206": ; preds = %"23" - unreachable - -"231": ; preds = %"23" - unreachable - -"241": ; preds = %"23" - unreachable - -"251": ; preds = %"23" - unreachable - -"261": ; preds = %"23" - unreachable - -"307": ; preds = %"23" - unreachable - -"353": ; preds = %"23" - unreachable - -"354": ; preds = %"23" - unreachable - -"355": ; preds = %"23" - unreachable - -"361": ; preds = %"23" - unreachable - -"367": ; preds = %"23" - unreachable - -"400": ; preds = %"23" - unreachable - -"433": ; preds = %"23" - unreachable - -"466": ; preds = %"23" - unreachable - -"499": ; preds = %"23" - unreachable - -"509": ; preds = %"23" - unreachable - -"519": ; preds = %"23" - unreachable - -"529": ; preds = %"23" - unreachable - -"571": ; preds = %"23" - unreachable - -"589": ; preds = %"23" - unreachable - -"607": ; preds = %"23" - unreachable - -"635": ; preds = %"23" - unreachable - -"655": ; preds = %"23" - unreachable - -"664": ; preds = %"23" - unreachable - -"671": ; preds = %"23" - unreachable - -"680": ; preds = %"23" - unreachable - -"687": ; preds = %"23" - unreachable - -"692": ; preds = %"23" - br label %"1862" - -"698": ; preds = %"23" - unreachable - -"704": ; preds = %"23" - unreachable - -"715": ; preds = %"23", %"23" - unreachable - -"716": ; preds = %"23" - unreachable - -"724": ; preds = %"23", %"23", %"23", %"23" - unreachable - -"725": ; preds = %"23", %"23", %"23", %"23" - unreachable - -"737": ; preds = %"23", %"23", %"23", %"23" - unreachable - -"758": ; preds = %"23" - unreachable - -"759": ; preds = %"23" - unreachable - -"760": ; preds = %"23" - unreachable - -"761": ; preds = %"23" - unreachable - -"763": ; preds = %"23" - unreachable - -"764": ; preds = %"23" - unreachable - -"765": ; preds = %"23" - br label %"766" - -"766": ; preds = %"765", %"23" - unreachable - -"768": ; preds = %"23" - unreachable - -"769": ; preds = %"23" - unreachable - -"770": ; preds = %"23" - unreachable - -"771": ; preds = %"23" - unreachable - -"777": ; preds = %"23" - unreachable - -"778": ; preds = %"23" - unreachable - -"779": ; preds = %"23" - unreachable - -"780": ; preds = %"23" - unreachable - -"821": ; preds = %"23" - unreachable - -"826": ; preds = %"23" - unreachable - -"831": ; preds = %"23" - unreachable - -"832": ; preds = %"23" - unreachable - -"833": ; preds = %"23" - unreachable - -"836": ; preds = %"23", %"23" - unreachable - -"886": ; preds = %"23" - unreachable - -"905": ; preds = %"23" - unreachable - -"978": ; preds = %"23", %"23" - unreachable - -"1136": ; preds = %"23" - unreachable - -"1166": ; preds = %"23" - unreachable - -"1179": ; preds = %"23" - unreachable - -"1201": ; preds = %"23" - unreachable - -"1212": ; preds = %"23", %"23" - unreachable - -"1274": ; preds = %"23" - unreachable - -"1284": ; preds = %"23", %"23" - unreachable - -"1346": ; preds = %"23" - unreachable - -"1347": ; preds = %"23" - unreachable - -"1348": ; preds = %"23" - unreachable - -"1349": ; preds = %"23" - unreachable - -"1350": ; preds = %"23" - unreachable - -"1353": ; preds = %"23", %"23", %"23" - unreachable - -"1355": ; preds = %"23", %"23" - unreachable - -"1357": ; preds = %"23", %"23" - unreachable - -"1358": ; preds = %"23" - unreachable - -"1359": ; preds = %"23" - unreachable - -"1374": ; preds = %"23" - unreachable - -"1375": ; preds = %"23" - %1 = zext i8 undef to i32 ; <i32> [#uses=1] - br label %"23" - -"1376": ; preds = %"23" - unreachable - -"1377": ; preds = %"23" - unreachable - -"1378": ; preds = %"23" - unreachable - -"1379": ; preds = %"23" - unreachable - -"1386": ; preds = %"23" - unreachable - -"1394": ; preds = %"23" - unreachable - -"1395": ; preds = %"23" - unreachable - -"1425": ; preds = %"23" - unreachable - -"1426": ; preds = %"23" - unreachable - -"1440": ; preds = %"23" - unreachable - -"1449": ; preds = %"23" - unreachable - -"1455": ; preds = %"23" - unreachable - -"1461": ; preds = %"23" - unreachable - -"1471": ; preds = %"23" - unreachable - -"1482": ; preds = %"23" - unreachable - -"1484": ; preds = %"23" - unreachable - -"1486": ; preds = %"23" - unreachable - -"1489": ; preds = %"23", %"23" - unreachable - -"1492": ; preds = %"23" - unreachable - -"1494": ; preds = %"23", %"23" - unreachable - -"1497": ; preds = %"23" - unreachable - -"1499": ; preds = %"23", %"23" - unreachable - -"1515": ; preds = %"23" - unreachable - -"1546": ; preds = %"23", %"23" - unreachable - -"1566": ; preds = %"23" - br i1 undef, label %"1569", label %"1568" - -"1568": ; preds = %"1566" - unreachable - -"1569": ; preds = %"1566" - unreachable - -"1584": ; preds = %"23" - unreachable - -"1587": ; preds = %"23" - unreachable - -"1591": ; preds = %"23" - unreachable - -"1605": ; preds = %"23" - unreachable - -"1609": ; preds = %"23", %"23" - unreachable - -"1640": ; preds = %"23" - unreachable - -"1648": ; preds = %"23" - unreachable - -"1651": ; preds = %"23" - unreachable - -"1703": ; preds = %"23" - unreachable - -"1710": ; preds = %"23" - unreachable - -"1718": ; preds = %"23" - unreachable - -"1724": ; preds = %"23" - unreachable - -"1725": ; preds = %"23" - unreachable - -"1726": ; preds = %"23" - unreachable - -"1727": ; preds = %"23" - unreachable - -"1728": ; preds = %"23" - unreachable - -"1731": ; preds = %"23" - unreachable - -"1732": ; preds = %"23" - unreachable - -"1733": ; preds = %"23" - unreachable - -"1734": ; preds = %"23" - unreachable - -"1735": ; preds = %"23" - unreachable - -"1741": ; preds = %"23" - unreachable - -"1750": ; preds = %"23" - unreachable - -"1752": ; preds = %"23" - unreachable - -"1754": ; preds = %"23" - unreachable - -"1755": ; preds = %"23" - unreachable - -"1757": ; preds = %"23" - unreachable - -"1759": ; preds = %"23" - unreachable - -"1761": ; preds = %"23" - unreachable - -"1764": ; preds = %"23", %"23" - %2 = icmp eq i32 %0, 168 ; <i1> [#uses=0] - unreachable - -"1766": ; preds = %"23" - unreachable - -"1768": ; preds = %"23" - unreachable - -"1775": ; preds = %"23", %"23" - unreachable - -"1781": ; preds = %"23", %"23" - unreachable - -"1790": ; preds = %"23" - unreachable - -"1827": ; preds = %"23" - unreachable - -"1836": ; preds = %"23", %"23" - br label %"1862" - -"1845": ; preds = %"23", %"23" - unreachable - -"1848": ; preds = %"23" - unreachable - -"1849": ; preds = %"23" - unreachable - -"1851": ; preds = %"23" - unreachable - -"1853": ; preds = %"23" - unreachable - -"1856": ; preds = %"23" - unreachable - -"1861": ; preds = %"23", %"23" - unreachable - -"41": ; preds = %"23", %"23" - unreachable - -"1862": ; preds = %"1836", %"692" - unreachable -} - -; An exit for Loop L1 may be the header of a disjoint Loop L2. Thus, when we -; create PHIs in one of such exits we are also inserting PHIs in L2 header. This -; could break LCSSA form for L2 because these inserted PHIs can also have uses -; in L2 exits. Test that we don't assert/crash on that. -define void @test1() { -; CHECK-LABEL: @test1 - br label %lab1 - -lab1: - %tmp21 = add i32 undef, 677038203 - br i1 undef, label %lab2, label %exit - -lab2: - indirectbr i8* undef, [label %lab1, label %lab3] - -lab3: -; CHECK: %tmp21.lcssa1 = phi i32 [ %tmp21.lcssa1, %lab4 ], [ %tmp21, %lab2 ] - %tmp12 = phi i32 [ %tmp21, %lab2 ], [ %tmp12, %lab4 ] - br i1 undef, label %lab5, label %lab4 - -lab4: - br label %lab3 - -lab5: -; CHECK: %tmp21.lcssa1.lcssa = phi i32 [ %tmp21.lcssa1, %lab3 ] - %tmp15 = add i32 %tmp12, undef - br label %exit - -exit: - ret void -} diff --git a/llvm/test/Transforms/LCSSA/invoke-dest.ll b/llvm/test/Transforms/LCSSA/invoke-dest.ll deleted file mode 100644 index 05a0e2a5e95..00000000000 --- a/llvm/test/Transforms/LCSSA/invoke-dest.ll +++ /dev/null @@ -1,152 +0,0 @@ -; RUN: opt < %s -lcssa -; RUN: opt < %s -passes=lcssa - -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-f80:32:32" - -@.str12 = external constant [3 x i8], align 1 ; <[3 x i8]*> [#uses=1] -@.str17175 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=1] -@.str21179 = external constant [12 x i8], align 1 ; <[12 x i8]*> [#uses=1] -@.str25183 = external constant [10 x i8], align 1 ; <[10 x i8]*> [#uses=1] -@.str32190 = external constant [92 x i8], align 1 ; <[92 x i8]*> [#uses=1] -@.str41 = external constant [25 x i8], align 1 ; <[25 x i8]*> [#uses=1] - -define void @_ZN8EtherBus10initializeEv() personality i32 (...)* @__gxx_personality_v0 { -entry: - br i1 undef, label %_ZN7cObjectnwEj.exit, label %bb.i - -bb.i: ; preds = %entry - br label %_ZN7cObjectnwEj.exit - -_ZN7cObjectnwEj.exit: ; preds = %bb.i, %entry - invoke void @_ZN7cObjectC2EPKc(i8* undef, i8* getelementptr ([12 x i8], [12 x i8]* @.str21179, i32 0, i32 0)) - to label %bb1 unwind label %lpad - -bb1: ; preds = %_ZN7cObjectnwEj.exit - br i1 undef, label %_ZNK5cGate4sizeEv.exit, label %bb.i110 - -bb.i110: ; preds = %bb1 - br label %_ZNK5cGate4sizeEv.exit - -_ZNK5cGate4sizeEv.exit: ; preds = %bb.i110, %bb1 - br i1 undef, label %_ZNK5cGate4sizeEv.exit122, label %bb.i120 - -bb.i120: ; preds = %_ZNK5cGate4sizeEv.exit - br label %_ZNK5cGate4sizeEv.exit122 - -_ZNK5cGate4sizeEv.exit122: ; preds = %bb.i120, %_ZNK5cGate4sizeEv.exit - br i1 undef, label %bb8, label %bb2 - -bb2: ; preds = %_ZNK5cGate4sizeEv.exit122 - unreachable - -bb8: ; preds = %_ZNK5cGate4sizeEv.exit122 - %tmp = invoke i8* @_ZN7cModule3parEPKc(i8* undef, i8* getelementptr ([10 x i8], [10 x i8]* @.str25183, i32 0, i32 0)) - to label %invcont9 unwind label %lpad119 ; <i8*> [#uses=1] - -invcont9: ; preds = %bb8 - %tmp1 = invoke i8* @_ZN4cPar11stringValueEv(i8* %tmp) - to label %invcont10 unwind label %lpad119 ; <i8*> [#uses=1] - -invcont10: ; preds = %invcont9 - invoke void @_ZN8EtherBus8tokenizeEPKcRSt6vectorIdSaIdEE(i8* null, i8* %tmp1, i8* undef) - to label %invcont11 unwind label %lpad119 - -invcont11: ; preds = %invcont10 - br i1 undef, label %bb12, label %bb18 - -bb12: ; preds = %invcont11 - invoke void (i8*, i8*, ...) @_ZN6cEnvir6printfEPKcz(i8* null, i8* getelementptr ([3 x i8], [3 x i8]* @.str12, i32 0, i32 0), i32 undef) - to label %bb.i.i159 unwind label %lpad119 - -bb.i.i159: ; preds = %bb12 - unreachable - -bb18: ; preds = %invcont11 - br i1 undef, label %bb32, label %bb34 - -bb32: ; preds = %bb18 - br i1 undef, label %bb.i.i123, label %bb34 - -bb.i.i123: ; preds = %bb32 - br label %bb34 - -bb34: ; preds = %bb.i.i123, %bb32, %bb18 - %tmp2 = invoke i8* @_Znaj(i32 undef) - to label %invcont35 unwind label %lpad119 ; <i8*> [#uses=0] - -invcont35: ; preds = %bb34 - br i1 undef, label %bb49, label %bb61 - -bb49: ; preds = %invcont35 - invoke void (i8*, i8*, ...) @_ZNK13cSimpleModule5errorEPKcz(i8* undef, i8* getelementptr ([92 x i8], [92 x i8]* @.str32190, i32 0, i32 0)) - to label %bb51 unwind label %lpad119 - -bb51: ; preds = %bb49 - unreachable - -bb61: ; preds = %invcont35 - br label %bb106 - -.noexc: ; preds = %bb106 - invoke void @_ZN7cObjectC2EPKc(i8* undef, i8* getelementptr ([25 x i8], [25 x i8]* @.str41, i32 0, i32 0)) - to label %bb102 unwind label %lpad123 - -bb102: ; preds = %.noexc - invoke void undef(i8* undef, i8 zeroext 1) - to label %invcont103 unwind label %lpad119 - -invcont103: ; preds = %bb102 - invoke void undef(i8* undef, double 1.000000e+07) - to label %invcont104 unwind label %lpad119 - -invcont104: ; preds = %invcont103 - %tmp3 = invoke i32 @_ZN13cSimpleModule11sendDelayedEP8cMessagedPKci(i8* undef, i8* undef, double 0.000000e+00, i8* getelementptr ([4 x i8], [4 x i8]* @.str17175, i32 0, i32 0), i32 undef) - to label %invcont105 unwind label %lpad119 ; <i32> [#uses=0] - -invcont105: ; preds = %invcont104 - br label %bb106 - -bb106: ; preds = %invcont105, %bb61 - %tmp4 = invoke i8* @_Znaj(i32 124) - to label %.noexc unwind label %lpad119 ; <i8*> [#uses=1] - -lpad: ; preds = %_ZN7cObjectnwEj.exit - %exn = landingpad {i8*, i32} - cleanup - br label %Unwind - -lpad119: ; preds = %bb106, %invcont104, %invcont103, %bb102, %bb49, %bb34, %bb12, %invcont10, %invcont9, %bb8 - %exn119 = landingpad {i8*, i32} - cleanup - unreachable - -lpad123: ; preds = %.noexc - %exn123 = landingpad {i8*, i32} - cleanup - %tmp5 = icmp eq i8* %tmp4, null ; <i1> [#uses=1] - br i1 %tmp5, label %Unwind, label %bb.i2 - -bb.i2: ; preds = %lpad123 - br label %Unwind - -Unwind: ; preds = %bb.i2, %lpad123, %lpad - unreachable -} - -declare i32 @__gxx_personality_v0(...) - -declare void @_ZN8EtherBus8tokenizeEPKcRSt6vectorIdSaIdEE(i8* nocapture, i8*, i8*) - -declare i8* @_Znaj(i32) - -declare void @_ZN6cEnvir6printfEPKcz(i8* nocapture, i8* nocapture, ...) - -declare void @_ZNK13cSimpleModule5errorEPKcz(i8* nocapture, i8* nocapture, ...) noreturn - -declare i8* @_ZN7cModule3parEPKc(i8*, i8*) - -declare i32 @_ZN13cSimpleModule11sendDelayedEP8cMessagedPKci(i8*, i8*, double, i8*, i32) - -declare void @_ZN7cObjectC2EPKc(i8*, i8*) - -declare i8* @_ZN4cPar11stringValueEv(i8*) diff --git a/llvm/test/Transforms/LCSSA/mixed-catch.ll b/llvm/test/Transforms/LCSSA/mixed-catch.ll deleted file mode 100644 index 1ae4cf8cdd0..00000000000 --- a/llvm/test/Transforms/LCSSA/mixed-catch.ll +++ /dev/null @@ -1,96 +0,0 @@ -; RUN: opt -lcssa -S < %s | FileCheck %s -; RUN: opt -passes=lcssa -S < %s | FileCheck %s - -; This test is based on the following C++ code: -; -; void f() -; { -; for (int i=0; i<12; i++) { -; try { -; if (i==3) -; throw i; -; } catch (int) { -; continue; -; } catch (...) { } -; if (i==3) break; -; } -; } -; -; The loop info analysis identifies the catch pad for the second catch as being -; outside the loop (because it returns to %for.end) but the associated -; catchswitch block is identified as being inside the loop. Because of this -; analysis, the LCSSA pass wants to create a PHI node in the catchpad block -; for the catchswitch value, but this is a token, so it can't. - -define void @f() personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to i8*) { -entry: - %tmp = alloca i32, align 4 - %i7 = alloca i32, align 4 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.inc ] - %cmp = icmp slt i32 %i.0, 12 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %cond = icmp eq i32 %i.0, 3 - br i1 %cond, label %if.then, label %for.inc - -if.then: ; preds = %for.body - store i32 %i.0, i32* %tmp, align 4 - %tmp1 = bitcast i32* %tmp to i8* - invoke void @_CxxThrowException(i8* %tmp1, %eh.ThrowInfo* nonnull @_TI1H) #1 - to label %unreachable unwind label %catch.dispatch - -catch.dispatch: ; preds = %if.then - %tmp2 = catchswitch within none [label %catch, label %catch2] unwind to caller - -catch: ; preds = %catch.dispatch - %tmp3 = catchpad within %tmp2 [%rtti.TypeDescriptor2* @"\01??_R0H@8", i32 0, i32* %i7] - catchret from %tmp3 to label %for.inc - -catch2: ; preds = %catch.dispatch - %tmp4 = catchpad within %tmp2 [i8* null, i32 64, i8* null] - catchret from %tmp4 to label %for.end - -for.inc: ; preds = %catch, %for.body - %inc = add nsw i32 %i.0, 1 - br label %for.cond - -for.end: ; preds = %catch2, %for.cond - ret void - -unreachable: ; preds = %if.then - unreachable -} - -; CHECK-LABEL: define void @f() -; CHECK: catch2: -; CHECK-NOT: phi -; CHECK: %tmp4 = catchpad within %tmp2 -; CHECK: catchret from %tmp4 to label %for.end - -%rtti.TypeDescriptor2 = type { i8**, i8*, [3 x i8] } -%eh.CatchableType = type { i32, i32, i32, i32, i32, i32, i32 } -%eh.CatchableTypeArray.1 = type { i32, [1 x i32] } -%eh.ThrowInfo = type { i32, i32, i32, i32 } - -$"\01??_R0H@8" = comdat any - -$"_CT??_R0H@84" = comdat any - -$_CTA1H = comdat any - -$_TI1H = comdat any - -@"\01??_7type_info@@6B@" = external constant i8* -@"\01??_R0H@8" = linkonce_odr global %rtti.TypeDescriptor2 { i8** @"\01??_7type_info@@6B@", i8* null, [3 x i8] c".H\00" }, comdat -@__ImageBase = external constant i8 -@"_CT??_R0H@84" = linkonce_odr unnamed_addr constant %eh.CatchableType { i32 1, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%rtti.TypeDescriptor2* @"\01??_R0H@8" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32), i32 0, i32 -1, i32 0, i32 4, i32 0 }, section ".xdata", comdat -@_CTA1H = linkonce_odr unnamed_addr constant %eh.CatchableTypeArray.1 { i32 1, [1 x i32] [i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%eh.CatchableType* @"_CT??_R0H@84" to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32)] }, section ".xdata", comdat -@_TI1H = linkonce_odr unnamed_addr constant %eh.ThrowInfo { i32 0, i32 0, i32 0, i32 trunc (i64 sub nuw nsw (i64 ptrtoint (%eh.CatchableTypeArray.1* @_CTA1H to i64), i64 ptrtoint (i8* @__ImageBase to i64)) to i32) }, section ".xdata", comdat - -declare void @_CxxThrowException(i8*, %eh.ThrowInfo*) - -declare i32 @__CxxFrameHandler3(...) 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/LCSSA/pr28608.ll b/llvm/test/Transforms/LCSSA/pr28608.ll deleted file mode 100644 index 3ba3fe8cda1..00000000000 --- a/llvm/test/Transforms/LCSSA/pr28608.ll +++ /dev/null @@ -1,35 +0,0 @@ -; RUN: opt < %s -lcssa -disable-output -target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" - -; PR28608 -; Check that we don't crash on this test. - -define void @foo() { -entry: - br label %bb1 - -bb1: - br label %bb2 - -bb2: - %x = phi i32 [ undef, %bb5 ], [ undef, %bb1 ] - br i1 undef, label %bb3, label %bb6 - -bb3: - br i1 undef, label %bb5, label %bb4 - -bb4: - br label %bb6 - -bb5: - br label %bb2 - -bb6: - br label %bb1 - -exit: - %y = add i32 0, %x - ret void -} - diff --git a/llvm/test/Transforms/LCSSA/remove-phis.ll b/llvm/test/Transforms/LCSSA/remove-phis.ll deleted file mode 100644 index 587fe7af3b9..00000000000 --- a/llvm/test/Transforms/LCSSA/remove-phis.ll +++ /dev/null @@ -1,56 +0,0 @@ -; RUN: opt < %s -lcssa -verify -S -o /dev/null - -; This bugpoint reduced test case used to assert when removing unused PHI nodes. -; Just verify that we do not assert/crash. - -define void @test() { -entry: - br label %gazank - -gazank: - %value = phi i16 [ 0, %entry ], [ undef, %gazonk ] - br i1 undef, label %gazink, label %qqq - -gazink: - br i1 undef, label %gazonk, label %infinite.loop.pred - -gazonk: - br i1 undef, label %exit1, label %gazank - -qqq: - br i1 undef, label %www, label %exit2 - -www: - br i1 undef, label %qqq, label %foo.pred - -foo.pred: - br label %foo - -foo: - br i1 undef, label %bar, label %exit1.pred - -bar: - br i1 undef, label %foo, label %exit2.pred - -unreachable1: - br i1 undef, label %foo, label %exit2.pred - -exit1.pred: - br label %exit1 - -exit1: - ret void - -exit2.pred: - br label %exit2 - -exit2: - ret void - -infinite.loop.pred: - br label %infinite.loop - -infinite.loop: - %dead = phi i16 [ %value, %infinite.loop.pred ], [ 0, %infinite.loop ] - br label %infinite.loop -} diff --git a/llvm/test/Transforms/LCSSA/rewrite-existing-dbg-values.ll b/llvm/test/Transforms/LCSSA/rewrite-existing-dbg-values.ll deleted file mode 100644 index bedcc780d31..00000000000 --- a/llvm/test/Transforms/LCSSA/rewrite-existing-dbg-values.ll +++ /dev/null @@ -1,137 +0,0 @@ -; RUN: opt -S -lcssa < %s | FileCheck %s - -; Reproducer for PR39019. -; -; Verify that the llvm.dbg.values are updated to use the PHI nodes inserted by -; LCSSA. - -; For the test case @single_exit, we can rewrite all llvm.dbg.value calls -; to use the inserted PHI. - -; CHECK-LABEL: @single_exit( - -; CHECK-LABEL: inner.body: -; CHECK: %add = add nsw i32 0, 2 -; CHECK: call void @llvm.dbg.value(metadata i32 %add, metadata [[VAR:![0-9]+]], metadata !DIExpression()) - - -; CHECK-LABEL: outer.exit: -; CHECK-NEXT: [[PN:%[^ ]*]] = phi i32 [ %add.lcssa, %outer.latch ] -; CHECK-NEXT: call void @llvm.dbg.value(metadata i32 [[PN]], metadata [[VAR]], metadata !DIExpression()) -; CHECK-NEXT: call void @bar(i32 [[PN]]) - -; CHECK-LABEL: exit: -; CHECK-NEXT: call void @llvm.dbg.value(metadata i32 [[PN]], metadata [[VAR]], metadata !DIExpression()) - -define void @single_exit() !dbg !6 { -entry: - br label %outer.header, !dbg !12 - -outer.header: ; preds = %outer.latch, %entry - br label %inner.body, !dbg !12 - -inner.body: ; preds = %inner.body, %outer.header - %add = add nsw i32 0, 2, !dbg !12 - call void @llvm.dbg.value(metadata i32 %add, metadata !9, metadata !DIExpression()), !dbg !12 - br i1 false, label %inner.body, label %inner.exit, !dbg !12 - -inner.exit: ; preds = %inner.body - br label %outer.latch - -outer.latch: ; preds = %inner.exit - br i1 false, label %outer.header, label %outer.exit, !dbg !12 - -outer.exit: ; preds = %outer.latch - call void @llvm.dbg.value(metadata i32 %add, metadata !9, metadata !DIExpression()), !dbg !12 - tail call void @bar(i32 %add), !dbg !12 - br label %exit - -exit: ; preds = %outer.exit - call void @llvm.dbg.value(metadata i32 %add, metadata !9, metadata !DIExpression()), !dbg !12 - ret void, !dbg !12 -} - -; For the test case @multi_exit, we cannot update the llvm.dbg.value call in exit, -; because LCSSA did not insert a PHI node in %exit, as there is no non-debug -; use. - -; CHECK-LABEL: @multi_exit() - -; CHECK-LABEL: for.header: -; CHECK-NEXT: %add = add nsw i32 0, 2 -; CHECK-NEXT: call void @llvm.dbg.value(metadata i32 %add, metadata [[VAR2:![0-9]+]], metadata !DIExpression()) - -; CHECK-LABEL: for.exit1: -; CHECK-NEXT: [[PN1:%[^ ]*]] = phi i32 [ %add, %for.header ] -; CHECK-NEXT: br label %for.exit1.succ - -; CHECK-LABEL: for.exit1.succ: -; CHECK-NEXT: call void @llvm.dbg.value(metadata i32 [[PN1]], metadata [[VAR2]], metadata !DIExpression()) -; CHECK-NEXT: call void @bar(i32 [[PN1]]) - -; CHECK-LABEL: for.exit2: -; CHECK-NEXT: [[PN2:%[^ ]*]] = phi i32 [ %add, %for.latch ] -; CHECK-NEXT: call void @llvm.dbg.value(metadata i32 [[PN2]], metadata [[VAR2]], metadata !DIExpression()) -; CHECK-NEXT: call void @bar(i32 [[PN2]]) - -; CHECK-LABEL: exit: -; CHECK-NEXT: call void @llvm.dbg.value(metadata i32 %add, metadata [[VAR2]], metadata !DIExpression()) - -define void @multi_exit() !dbg !13 { -entry: - br label %for.header, !dbg !14 - -for.header: ; preds = %for.latch, %entry - %add = add nsw i32 0, 2, !dbg !14 - call void @llvm.dbg.value(metadata i32 %add, metadata !16, metadata !DIExpression()), !dbg !14 - br i1 false, label %for.latch, label %for.exit1, !dbg !14 - -for.latch: ; preds = %for.header - br i1 false, label %for.header, label %for.exit2, !dbg !14 - -for.exit1: ; preds = %for.header - br label %for.exit1.succ - -for.exit1.succ: ; preds = %for.exit1 - call void @llvm.dbg.value(metadata i32 %add, metadata !16, metadata !DIExpression()), !dbg !14 - tail call void @bar(i32 %add), !dbg !14 - br label %exit - -for.exit2: ; preds = %for.latch - call void @llvm.dbg.value(metadata i32 %add, metadata !16, metadata !DIExpression()), !dbg !14 - tail call void @bar(i32 %add), !dbg !14 - br label %exit - -exit: ; preds = %for.exit2, %for.exit1.succ - call void @llvm.dbg.value(metadata i32 %add, metadata !16, metadata !DIExpression()), !dbg !14 - ret void, !dbg !14 -} - -; CHECK: [[VAR]] = !DILocalVariable(name: "sum", -; CHECK: [[VAR2]] = !DILocalVariable(name: "sum2", - -declare void @bar(i32) - -declare void @llvm.dbg.value(metadata, metadata, metadata) - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!3, !4} -!llvm.ident = !{!5} - -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 8.0.0", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, globals: !2, nameTableKind: None) -!1 = !DIFile(filename: "foo.c", directory: "/") -!2 = !{} -!3 = !{i32 2, !"Dwarf Version", i32 4} -!4 = !{i32 2, !"Debug Info Version", i32 3} -!5 = !{!"clang version 8.0.0"} -!6 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 10, type: !7, scopeLine: 10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !8) -!7 = !DISubroutineType(types: !2) -!8 = !{!9} -!9 = !DILocalVariable(name: "sum", scope: !10, file: !1, line: 11, type: !11) -!10 = !DILexicalBlockFile(scope: !6, file: !1, discriminator: 0) -!11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!12 = !DILocation(line: 0, scope: !10) -!13 = distinct !DISubprogram(name: "multi_exit", scope: !1, file: !1, line: 10, type: !7, scopeLine: 10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !8) -!14 = !DILocation(line: 0, scope: !15) -!15 = !DILexicalBlockFile(scope: !13, file: !1, discriminator: 0) -!16 = !DILocalVariable(name: "sum2", scope: !15, file: !1, line: 11, type: !11) diff --git a/llvm/test/Transforms/LCSSA/unreachable-use.ll b/llvm/test/Transforms/LCSSA/unreachable-use.ll deleted file mode 100644 index c9e456c1747..00000000000 --- a/llvm/test/Transforms/LCSSA/unreachable-use.ll +++ /dev/null @@ -1,29 +0,0 @@ -; RUN: opt < %s -lcssa -S -verify-loop-info | FileCheck %s -; PR6546 - -; LCSSA doesn't need to transform uses in blocks not reachable -; from the entry block. - -; CHECK: %tmp33 = load i1*, i1** %tmp - -define fastcc void @dfs() nounwind { -bb: - br label %bb44 - -bb44: - br i1 undef, label %bb7, label %bb45 - -bb7: - %tmp = bitcast i1** undef to i1** - br label %bb15 - -bb15: - br label %bb44 - -bb32: - %tmp33 = load i1*, i1** %tmp, align 8 - br label %bb45 - -bb45: - unreachable -} diff --git a/llvm/test/Transforms/LCSSA/unused-phis.ll b/llvm/test/Transforms/LCSSA/unused-phis.ll deleted file mode 100644 index 2c503f32713..00000000000 --- a/llvm/test/Transforms/LCSSA/unused-phis.ll +++ /dev/null @@ -1,39 +0,0 @@ -; RUN: opt < %s -lcssa -S | FileCheck %s -; RUN: opt < %s -passes=lcssa -S | FileCheck %s -; CHECK: exit1: -; CHECK: .lcssa = -; CHECK: exit2: -; CHECK: .lcssa1 = -; CHECK: exit3: -; CHECK-NOT: .lcssa - -; Test to ensure that when there are multiple exit blocks, PHI nodes are -; only inserted by LCSSA when there is a use dominated by a given exit -; block. - -declare void @printf(i32 %i) - -define i32 @unused_phis() nounwind { -entry: - br label %loop - -loop: - %i = phi i32 [0, %entry], [1, %then2] - br i1 undef, label %exit1, label %then1 - -then1: - br i1 undef, label %exit2, label %then2 - -then2: - br i1 undef, label %exit3, label %loop - -exit1: - call void @printf(i32 %i) - ret i32 %i - -exit2: - ret i32 %i - -exit3: - ret i32 0 -} |

