[llvm] eeb0884 - [LoopUnroll] Use poison instead of undef for preheader value
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 25 03:10:07 PDT 2024
Author: Nikita Popov
Date: 2024-06-25T12:09:58+02:00
New Revision: eeb0884e6696ec618feb2181a432d10f66d4e840
URL: https://github.com/llvm/llvm-project/commit/eeb0884e6696ec618feb2181a432d10f66d4e840
DIFF: https://github.com/llvm/llvm-project/commit/eeb0884e6696ec618feb2181a432d10f66d4e840.diff
LOG: [LoopUnroll] Use poison instead of undef for preheader value
Added:
Modified:
llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
llvm/test/Transforms/LoopUnroll/ARM/multi-blocks.ll
llvm/test/Transforms/LoopUnroll/runtime-exit-phi-scev-invalidation.ll
llvm/test/Transforms/LoopUnroll/runtime-loop-at-most-two-exits.ll
llvm/test/Transforms/LoopUnroll/runtime-loop-multiple-exits.ll
llvm/test/Transforms/LoopUnroll/runtime-loop5.ll
llvm/test/Transforms/LoopUnroll/runtime-multiexit-heuristic.ll
llvm/test/Transforms/LoopUnroll/runtime-unroll-remainder.ll
llvm/test/Transforms/LoopUnroll/tripcount-overflow.ll
llvm/test/Transforms/LoopUnrollAndJam/unroll-and-jam.ll
llvm/test/Transforms/LoopVectorize/X86/float-induction-x86.ll
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp b/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
index 15303a17467b4..01b653f3a57b7 100644
--- a/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
+++ b/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
@@ -253,7 +253,7 @@ static void ConnectEpilog(Loop *L, Value *ModVal, BasicBlock *NewExit,
assert(EpilogPN->getParent() == Exit && "EpilogPN should be in Exit block");
// Add incoming PreHeader from branch around the Loop
- PN.addIncoming(UndefValue::get(PN.getType()), PreHeader);
+ PN.addIncoming(PoisonValue::get(PN.getType()), PreHeader);
SE.forgetValue(&PN);
Value *V = PN.getIncomingValueForBlock(Latch);
@@ -272,7 +272,7 @@ static void ConnectEpilog(Loop *L, Value *ModVal, BasicBlock *NewExit,
NewExit);
// Now PHIs should look like:
// NewExit:
- // PN = PHI [I, Latch], [undef, PreHeader]
+ // PN = PHI [I, Latch], [poison, PreHeader]
// ...
// Exit:
// EpilogPN = PHI [PN, NewExit], [VMap[I], EpilogLatch]
diff --git a/llvm/test/Transforms/LoopUnroll/ARM/multi-blocks.ll b/llvm/test/Transforms/LoopUnroll/ARM/multi-blocks.ll
index f988c153b8bc7..d2911a14d8485 100644
--- a/llvm/test/Transforms/LoopUnroll/ARM/multi-blocks.ll
+++ b/llvm/test/Transforms/LoopUnroll/ARM/multi-blocks.ll
@@ -21,7 +21,7 @@ define void @test_three_blocks(ptr nocapture %Output, ptr nocapture readonly %Co
; CHECK-NEXT: [[TEMP_09_UNR_PH:%.*]] = phi i32 [ [[TEMP_1_3]], [[FOR_INC_3]] ]
; CHECK-NEXT: br label [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA]]
; CHECK: for.cond.cleanup.loopexit.unr-lcssa:
-; CHECK-NEXT: [[TEMP_1_LCSSA_PH:%.*]] = phi i32 [ undef, [[FOR_BODY_PREHEADER]] ], [ [[TEMP_1_LCSSA_PH_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT:%.*]] ]
+; CHECK-NEXT: [[TEMP_1_LCSSA_PH:%.*]] = phi i32 [ poison, [[FOR_BODY_PREHEADER]] ], [ [[TEMP_1_LCSSA_PH_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT:%.*]] ]
; CHECK-NEXT: [[J_010_UNR:%.*]] = phi i32 [ 0, [[FOR_BODY_PREHEADER]] ], [ [[J_010_UNR_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[TEMP_09_UNR:%.*]] = phi i32 [ 0, [[FOR_BODY_PREHEADER]] ], [ [[TEMP_09_UNR_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i32 [[XTRAITER]], 0
@@ -365,7 +365,7 @@ define void @test_four_blocks(ptr nocapture %Output, ptr nocapture readonly %Con
; CHECK-NEXT: [[TEMP_026_UNR_PH:%.*]] = phi i32 [ [[TEMP_1_3]], [[FOR_INC_3]] ]
; CHECK-NEXT: br label [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA]]
; CHECK: for.cond.cleanup.loopexit.unr-lcssa:
-; CHECK-NEXT: [[TEMP_1_LCSSA_PH:%.*]] = phi i32 [ undef, [[FOR_BODY_LR_PH]] ], [ [[TEMP_1_LCSSA_PH_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT:%.*]] ]
+; CHECK-NEXT: [[TEMP_1_LCSSA_PH:%.*]] = phi i32 [ poison, [[FOR_BODY_LR_PH]] ], [ [[TEMP_1_LCSSA_PH_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT:%.*]] ]
; CHECK-NEXT: [[I_UNR:%.*]] = phi i32 [ [[DOTPRE]], [[FOR_BODY_LR_PH]] ], [ [[I_UNR_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[J_027_UNR:%.*]] = phi i32 [ 1, [[FOR_BODY_LR_PH]] ], [ [[J_027_UNR_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[TEMP_026_UNR:%.*]] = phi i32 [ 0, [[FOR_BODY_LR_PH]] ], [ [[TEMP_026_UNR_PH]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-exit-phi-scev-invalidation.ll b/llvm/test/Transforms/LoopUnroll/runtime-exit-phi-scev-invalidation.ll
index 669306c8f3ab7..f93750e735bc2 100644
--- a/llvm/test/Transforms/LoopUnroll/runtime-exit-phi-scev-invalidation.ll
+++ b/llvm/test/Transforms/LoopUnroll/runtime-exit-phi-scev-invalidation.ll
@@ -68,7 +68,7 @@ define void @pr56282() {
; CHECK-NEXT: [[INNER_1_IV_UNR_PH:%.*]] = phi i64 [ [[INNER_1_IV_NEXT_7]], [[INNER_1_LATCH_7]] ]
; CHECK-NEXT: br label [[OUTER_MIDDLE_UNR_LCSSA]]
; CHECK: outer.middle.unr-lcssa:
-; CHECK-NEXT: [[V_LCSSA1_PH:%.*]] = phi i32 [ undef, [[OUTER_HEADER]] ], [ [[V_LCSSA1_PH_PH]], [[OUTER_MIDDLE_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[V_LCSSA1_PH:%.*]] = phi i32 [ poison, [[OUTER_HEADER]] ], [ [[V_LCSSA1_PH_PH]], [[OUTER_MIDDLE_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[INNER_1_IV_UNR:%.*]] = phi i64 [ 0, [[OUTER_HEADER]] ], [ [[INNER_1_IV_UNR_PH]], [[OUTER_MIDDLE_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[INNER_1_HEADER_EPIL_PREHEADER:%.*]], label [[OUTER_MIDDLE:%.*]]
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-loop-at-most-two-exits.ll b/llvm/test/Transforms/LoopUnroll/runtime-loop-at-most-two-exits.ll
index d5864e91c13e9..8472a8c9762b3 100644
--- a/llvm/test/Transforms/LoopUnroll/runtime-loop-at-most-two-exits.ll
+++ b/llvm/test/Transforms/LoopUnroll/runtime-loop-at-most-two-exits.ll
@@ -78,7 +78,7 @@ define i32 @test(ptr nocapture %a, i64 %n) {
; ENABLED-NEXT: [[SUM_02_UNR_PH:%.*]] = phi i32 [ [[ADD_7]], [[FOR_BODY_7]] ]
; ENABLED-NEXT: br label [[FOR_END_UNR_LCSSA]]
; ENABLED: for.end.unr-lcssa:
-; ENABLED-NEXT: [[SUM_0_LCSSA_PH:%.*]] = phi i32 [ undef, [[ENTRY:%.*]] ], [ [[SUM_0_LCSSA_PH_PH]], [[FOR_END_UNR_LCSSA_LOOPEXIT]] ]
+; ENABLED-NEXT: [[SUM_0_LCSSA_PH:%.*]] = phi i32 [ poison, [[ENTRY:%.*]] ], [ [[SUM_0_LCSSA_PH_PH]], [[FOR_END_UNR_LCSSA_LOOPEXIT]] ]
; ENABLED-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY]] ], [ [[INDVARS_IV_UNR_PH]], [[FOR_END_UNR_LCSSA_LOOPEXIT]] ]
; ENABLED-NEXT: [[SUM_02_UNR:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[SUM_02_UNR_PH]], [[FOR_END_UNR_LCSSA_LOOPEXIT]] ]
; ENABLED-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-loop-multiple-exits.ll b/llvm/test/Transforms/LoopUnroll/runtime-loop-multiple-exits.ll
index 6cad2e1c4a324..e9186274ffe49 100644
--- a/llvm/test/Transforms/LoopUnroll/runtime-loop-multiple-exits.ll
+++ b/llvm/test/Transforms/LoopUnroll/runtime-loop-multiple-exits.ll
@@ -455,7 +455,7 @@ define i32 @test2(ptr nocapture %a, i64 %n) {
; EPILOG-NEXT: %sum.02.unr.ph = phi i32 [ %add.7, %for.body.7 ]
; EPILOG-NEXT: br label %for.end.unr-lcssa
; EPILOG: for.end.unr-lcssa:
-; EPILOG-NEXT: %sum.0.lcssa.ph = phi i32 [ undef, %entry ], [ %sum.0.lcssa.ph.ph, %for.end.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %sum.0.lcssa.ph = phi i32 [ poison, %entry ], [ %sum.0.lcssa.ph.ph, %for.end.unr-lcssa.loopexit ]
; EPILOG-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %for.end.unr-lcssa.loopexit ]
; EPILOG-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %for.end.unr-lcssa.loopexit ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
@@ -536,7 +536,7 @@ define i32 @test2(ptr nocapture %a, i64 %n) {
; EPILOG-BLOCK-NEXT: %sum.02.unr.ph = phi i32 [ %add.1, %for.body.1 ]
; EPILOG-BLOCK-NEXT: br label %for.end.unr-lcssa
; EPILOG-BLOCK: for.end.unr-lcssa:
-; EPILOG-BLOCK-NEXT: %sum.0.lcssa.ph = phi i32 [ undef, %entry ], [ %sum.0.lcssa.ph.ph, %for.end.unr-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %sum.0.lcssa.ph = phi i32 [ poison, %entry ], [ %sum.0.lcssa.ph.ph, %for.end.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %for.end.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %for.end.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
@@ -807,8 +807,8 @@ define void @test3(i64 %trip, i64 %add) {
; EPILOG-NEXT: br i1 undef, label %loop_latch, label %loop_exiting_bb1
; EPILOG: loop_exiting_bb1:
; EPILOG-NEXT: switch i64 %sum, label %loop_latch [
-; EPILOG-NEXT: i64 24, label %exit1.loopexit
-; EPILOG-NEXT: i64 42, label %exit3.loopexit
+; EPILOG-NEXT: i64 24, label %exit1.loopexit
+; EPILOG-NEXT: i64 42, label %exit3.loopexit
; EPILOG-NEXT: ]
; EPILOG: exit3.loopexit:
; EPILOG-NEXT: br label %exit3
@@ -821,56 +821,56 @@ define void @test3(i64 %trip, i64 %add) {
; EPILOG-NEXT: br i1 undef, label %loop_latch.1, label %loop_exiting_bb1.1
; EPILOG: loop_exiting_bb1.1:
; EPILOG-NEXT: switch i64 %sum.next, label %loop_latch.1 [
-; EPILOG-NEXT: i64 24, label %exit1.loopexit
-; EPILOG-NEXT: i64 42, label %exit3.loopexit
+; EPILOG-NEXT: i64 24, label %exit1.loopexit
+; EPILOG-NEXT: i64 42, label %exit3.loopexit
; EPILOG-NEXT: ]
; EPILOG: loop_latch.1:
; EPILOG-NEXT: %sum.next.1 = add i64 %sum.next, %add
; EPILOG-NEXT: br i1 undef, label %loop_latch.2, label %loop_exiting_bb1.2
; EPILOG: loop_exiting_bb1.2:
; EPILOG-NEXT: switch i64 %sum.next.1, label %loop_latch.2 [
-; EPILOG-NEXT: i64 24, label %exit1.loopexit
-; EPILOG-NEXT: i64 42, label %exit3.loopexit
+; EPILOG-NEXT: i64 24, label %exit1.loopexit
+; EPILOG-NEXT: i64 42, label %exit3.loopexit
; EPILOG-NEXT: ]
; EPILOG: loop_latch.2:
; EPILOG-NEXT: %sum.next.2 = add i64 %sum.next.1, %add
; EPILOG-NEXT: br i1 undef, label %loop_latch.3, label %loop_exiting_bb1.3
; EPILOG: loop_exiting_bb1.3:
; EPILOG-NEXT: switch i64 %sum.next.2, label %loop_latch.3 [
-; EPILOG-NEXT: i64 24, label %exit1.loopexit
-; EPILOG-NEXT: i64 42, label %exit3.loopexit
+; EPILOG-NEXT: i64 24, label %exit1.loopexit
+; EPILOG-NEXT: i64 42, label %exit3.loopexit
; EPILOG-NEXT: ]
; EPILOG: loop_latch.3:
; EPILOG-NEXT: %sum.next.3 = add i64 %sum.next.2, %add
; EPILOG-NEXT: br i1 undef, label %loop_latch.4, label %loop_exiting_bb1.4
; EPILOG: loop_exiting_bb1.4:
; EPILOG-NEXT: switch i64 %sum.next.3, label %loop_latch.4 [
-; EPILOG-NEXT: i64 24, label %exit1.loopexit
-; EPILOG-NEXT: i64 42, label %exit3.loopexit
+; EPILOG-NEXT: i64 24, label %exit1.loopexit
+; EPILOG-NEXT: i64 42, label %exit3.loopexit
; EPILOG-NEXT: ]
; EPILOG: loop_latch.4:
; EPILOG-NEXT: %sum.next.4 = add i64 %sum.next.3, %add
; EPILOG-NEXT: br i1 undef, label %loop_latch.5, label %loop_exiting_bb1.5
; EPILOG: loop_exiting_bb1.5:
; EPILOG-NEXT: switch i64 %sum.next.4, label %loop_latch.5 [
-; EPILOG-NEXT: i64 24, label %exit1.loopexit
-; EPILOG-NEXT: i64 42, label %exit3.loopexit
+; EPILOG-NEXT: i64 24, label %exit1.loopexit
+; EPILOG-NEXT: i64 42, label %exit3.loopexit
; EPILOG-NEXT: ]
; EPILOG: loop_latch.5:
; EPILOG-NEXT: %sum.next.5 = add i64 %sum.next.4, %add
; EPILOG-NEXT: br i1 undef, label %loop_latch.6, label %loop_exiting_bb1.6
; EPILOG: loop_exiting_bb1.6:
; EPILOG-NEXT: switch i64 %sum.next.5, label %loop_latch.6 [
-; EPILOG-NEXT: i64 24, label %exit1.loopexit
-; EPILOG-NEXT: i64 42, label %exit3.loopexit
+; EPILOG-NEXT: i64 24, label %exit1.loopexit
+; EPILOG-NEXT: i64 42, label %exit3.loopexit
; EPILOG-NEXT: ]
; EPILOG: loop_latch.6:
; EPILOG-NEXT: %sum.next.6 = add i64 %sum.next.5, %add
; EPILOG-NEXT: br i1 undef, label %loop_latch.7, label %loop_exiting_bb1.7
; EPILOG: loop_exiting_bb1.7:
; EPILOG-NEXT: switch i64 %sum.next.6, label %loop_latch.7 [
-; EPILOG-NEXT: i64 24, label %exit1.loopexit
-; EPILOG-NEXT: i64 42, label %exit3.loopexit
+; EPILOG-NEXT: i64 24, label %exit1.loopexit
+; EPILOG-NEXT: i64 42, label %exit3.loopexit
; EPILOG-NEXT: ]
; EPILOG: loop_latch.7:
; EPILOG-NEXT: %iv_next.7 = add nuw nsw i64 %iv, 8
@@ -902,8 +902,8 @@ define void @test3(i64 %trip, i64 %add) {
; EPILOG-NEXT: br i1 undef, label %loop_latch.epil, label %loop_exiting_bb1.epil
; EPILOG: loop_exiting_bb1.epil:
; EPILOG-NEXT: switch i64 %sum.epil, label %loop_latch.epil [
-; EPILOG-NEXT: i64 24, label %exit1.loopexit1
-; EPILOG-NEXT: i64 42, label %exit3.loopexit2
+; EPILOG-NEXT: i64 24, label %exit1.loopexit1
+; EPILOG-NEXT: i64 42, label %exit3.loopexit2
; EPILOG-NEXT: ]
; EPILOG: loop_latch.epil:
; EPILOG-NEXT: %iv_next.epil = add nuw nsw i64 %iv.epil, 1
@@ -934,8 +934,8 @@ define void @test3(i64 %trip, i64 %add) {
; EPILOG-BLOCK-NEXT: br i1 undef, label %loop_latch, label %loop_exiting_bb1
; EPILOG-BLOCK: loop_exiting_bb1:
; EPILOG-BLOCK-NEXT: switch i64 %sum, label %loop_latch [
-; EPILOG-BLOCK-NEXT: i64 24, label %exit1.loopexit
-; EPILOG-BLOCK-NEXT: i64 42, label %exit3.loopexit
+; EPILOG-BLOCK-NEXT: i64 24, label %exit1.loopexit
+; EPILOG-BLOCK-NEXT: i64 42, label %exit3.loopexit
; EPILOG-BLOCK-NEXT: ]
; EPILOG-BLOCK: exit3.loopexit:
; EPILOG-BLOCK-NEXT: br label %exit3
@@ -946,8 +946,8 @@ define void @test3(i64 %trip, i64 %add) {
; EPILOG-BLOCK-NEXT: br i1 undef, label %loop_latch.1, label %loop_exiting_bb1.1
; EPILOG-BLOCK: loop_exiting_bb1.1:
; EPILOG-BLOCK-NEXT: switch i64 %sum.next, label %loop_latch.1 [
-; EPILOG-BLOCK-NEXT: i64 24, label %exit1.loopexit
-; EPILOG-BLOCK-NEXT: i64 42, label %exit3.loopexit
+; EPILOG-BLOCK-NEXT: i64 24, label %exit1.loopexit
+; EPILOG-BLOCK-NEXT: i64 42, label %exit3.loopexit
; EPILOG-BLOCK-NEXT: ]
; EPILOG-BLOCK: loop_latch.1:
; EPILOG-BLOCK-NEXT: %iv_next.1 = add nuw nsw i64 %iv, 2
@@ -972,8 +972,8 @@ define void @test3(i64 %trip, i64 %add) {
; EPILOG-BLOCK-NEXT: br i1 undef, label %loop_latch.epil, label %loop_exiting_bb1.epil
; EPILOG-BLOCK: loop_exiting_bb1.epil:
; EPILOG-BLOCK-NEXT: switch i64 %sum.unr, label %loop_latch.epil [
-; EPILOG-BLOCK-NEXT: i64 24, label %exit1
-; EPILOG-BLOCK-NEXT: i64 42, label %exit3
+; EPILOG-BLOCK-NEXT: i64 24, label %exit1
+; EPILOG-BLOCK-NEXT: i64 42, label %exit3
; EPILOG-BLOCK-NEXT: ]
; EPILOG-BLOCK: loop_latch.epil:
; EPILOG-BLOCK-NEXT: br label %exit2.loopexit
@@ -996,8 +996,8 @@ define void @test3(i64 %trip, i64 %add) {
; PROLOG-NEXT: br i1 undef, label %loop_latch.prol, label %loop_exiting_bb1.prol
; PROLOG: loop_exiting_bb1.prol:
; PROLOG-NEXT: switch i64 %sum.prol, label %loop_latch.prol [
-; PROLOG-NEXT: i64 24, label %exit1.loopexit1
-; PROLOG-NEXT: i64 42, label %exit3.loopexit2
+; PROLOG-NEXT: i64 24, label %exit1.loopexit1
+; PROLOG-NEXT: i64 42, label %exit3.loopexit2
; PROLOG-NEXT: ]
; PROLOG: loop_latch.prol:
; PROLOG-NEXT: %iv_next.prol = add nuw nsw i64 %iv.prol, 1
@@ -1023,8 +1023,8 @@ define void @test3(i64 %trip, i64 %add) {
; PROLOG-NEXT: br i1 undef, label %loop_latch, label %loop_exiting_bb1
; PROLOG: loop_exiting_bb1:
; PROLOG-NEXT: switch i64 %sum, label %loop_latch [
-; PROLOG-NEXT: i64 24, label %exit1.loopexit
-; PROLOG-NEXT: i64 42, label %exit3.loopexit
+; PROLOG-NEXT: i64 24, label %exit1.loopexit
+; PROLOG-NEXT: i64 42, label %exit3.loopexit
; PROLOG-NEXT: ]
; PROLOG: exit3.loopexit:
; PROLOG-NEXT: br label %exit3
@@ -1037,56 +1037,56 @@ define void @test3(i64 %trip, i64 %add) {
; PROLOG-NEXT: br i1 undef, label %loop_latch.1, label %loop_exiting_bb1.1
; PROLOG: loop_exiting_bb1.1:
; PROLOG-NEXT: switch i64 %sum.next, label %loop_latch.1 [
-; PROLOG-NEXT: i64 24, label %exit1.loopexit
-; PROLOG-NEXT: i64 42, label %exit3.loopexit
+; PROLOG-NEXT: i64 24, label %exit1.loopexit
+; PROLOG-NEXT: i64 42, label %exit3.loopexit
; PROLOG-NEXT: ]
; PROLOG: loop_latch.1:
; PROLOG-NEXT: %sum.next.1 = add i64 %sum.next, %add
; PROLOG-NEXT: br i1 undef, label %loop_latch.2, label %loop_exiting_bb1.2
; PROLOG: loop_exiting_bb1.2:
; PROLOG-NEXT: switch i64 %sum.next.1, label %loop_latch.2 [
-; PROLOG-NEXT: i64 24, label %exit1.loopexit
-; PROLOG-NEXT: i64 42, label %exit3.loopexit
+; PROLOG-NEXT: i64 24, label %exit1.loopexit
+; PROLOG-NEXT: i64 42, label %exit3.loopexit
; PROLOG-NEXT: ]
; PROLOG: loop_latch.2:
; PROLOG-NEXT: %sum.next.2 = add i64 %sum.next.1, %add
; PROLOG-NEXT: br i1 undef, label %loop_latch.3, label %loop_exiting_bb1.3
; PROLOG: loop_exiting_bb1.3:
; PROLOG-NEXT: switch i64 %sum.next.2, label %loop_latch.3 [
-; PROLOG-NEXT: i64 24, label %exit1.loopexit
-; PROLOG-NEXT: i64 42, label %exit3.loopexit
+; PROLOG-NEXT: i64 24, label %exit1.loopexit
+; PROLOG-NEXT: i64 42, label %exit3.loopexit
; PROLOG-NEXT: ]
; PROLOG: loop_latch.3:
; PROLOG-NEXT: %sum.next.3 = add i64 %sum.next.2, %add
; PROLOG-NEXT: br i1 undef, label %loop_latch.4, label %loop_exiting_bb1.4
; PROLOG: loop_exiting_bb1.4:
; PROLOG-NEXT: switch i64 %sum.next.3, label %loop_latch.4 [
-; PROLOG-NEXT: i64 24, label %exit1.loopexit
-; PROLOG-NEXT: i64 42, label %exit3.loopexit
+; PROLOG-NEXT: i64 24, label %exit1.loopexit
+; PROLOG-NEXT: i64 42, label %exit3.loopexit
; PROLOG-NEXT: ]
; PROLOG: loop_latch.4:
; PROLOG-NEXT: %sum.next.4 = add i64 %sum.next.3, %add
; PROLOG-NEXT: br i1 undef, label %loop_latch.5, label %loop_exiting_bb1.5
; PROLOG: loop_exiting_bb1.5:
; PROLOG-NEXT: switch i64 %sum.next.4, label %loop_latch.5 [
-; PROLOG-NEXT: i64 24, label %exit1.loopexit
-; PROLOG-NEXT: i64 42, label %exit3.loopexit
+; PROLOG-NEXT: i64 24, label %exit1.loopexit
+; PROLOG-NEXT: i64 42, label %exit3.loopexit
; PROLOG-NEXT: ]
; PROLOG: loop_latch.5:
; PROLOG-NEXT: %sum.next.5 = add i64 %sum.next.4, %add
; PROLOG-NEXT: br i1 undef, label %loop_latch.6, label %loop_exiting_bb1.6
; PROLOG: loop_exiting_bb1.6:
; PROLOG-NEXT: switch i64 %sum.next.5, label %loop_latch.6 [
-; PROLOG-NEXT: i64 24, label %exit1.loopexit
-; PROLOG-NEXT: i64 42, label %exit3.loopexit
+; PROLOG-NEXT: i64 24, label %exit1.loopexit
+; PROLOG-NEXT: i64 42, label %exit3.loopexit
; PROLOG-NEXT: ]
; PROLOG: loop_latch.6:
; PROLOG-NEXT: %sum.next.6 = add i64 %sum.next.5, %add
; PROLOG-NEXT: br i1 undef, label %loop_latch.7, label %loop_exiting_bb1.7
; PROLOG: loop_exiting_bb1.7:
; PROLOG-NEXT: switch i64 %sum.next.6, label %loop_latch.7 [
-; PROLOG-NEXT: i64 24, label %exit1.loopexit
-; PROLOG-NEXT: i64 42, label %exit3.loopexit
+; PROLOG-NEXT: i64 24, label %exit1.loopexit
+; PROLOG-NEXT: i64 42, label %exit3.loopexit
; PROLOG-NEXT: ]
; PROLOG: loop_latch.7:
; PROLOG-NEXT: %iv_next.7 = add nuw nsw i64 %iv, 8
@@ -1117,8 +1117,8 @@ define void @test3(i64 %trip, i64 %add) {
; PROLOG-BLOCK-NEXT: br i1 undef, label %loop_latch.prol, label %loop_exiting_bb1.prol
; PROLOG-BLOCK: loop_exiting_bb1.prol:
; PROLOG-BLOCK-NEXT: switch i64 0, label %loop_latch.prol [
-; PROLOG-BLOCK-NEXT: i64 24, label %exit1
-; PROLOG-BLOCK-NEXT: i64 42, label %exit3
+; PROLOG-BLOCK-NEXT: i64 24, label %exit1
+; PROLOG-BLOCK-NEXT: i64 42, label %exit3
; PROLOG-BLOCK-NEXT: ]
; PROLOG-BLOCK: loop_latch.prol:
; PROLOG-BLOCK-NEXT: br label %loop_header.prol.loopexit
@@ -1135,8 +1135,8 @@ define void @test3(i64 %trip, i64 %add) {
; PROLOG-BLOCK-NEXT: br i1 undef, label %loop_latch, label %loop_exiting_bb1
; PROLOG-BLOCK: loop_exiting_bb1:
; PROLOG-BLOCK-NEXT: switch i64 %sum, label %loop_latch [
-; PROLOG-BLOCK-NEXT: i64 24, label %exit1.loopexit
-; PROLOG-BLOCK-NEXT: i64 42, label %exit3.loopexit
+; PROLOG-BLOCK-NEXT: i64 24, label %exit1.loopexit
+; PROLOG-BLOCK-NEXT: i64 42, label %exit3.loopexit
; PROLOG-BLOCK-NEXT: ]
; PROLOG-BLOCK: exit3.loopexit:
; PROLOG-BLOCK-NEXT: br label %exit3
@@ -1147,8 +1147,8 @@ define void @test3(i64 %trip, i64 %add) {
; PROLOG-BLOCK-NEXT: br i1 undef, label %loop_latch.1, label %loop_exiting_bb1.1
; PROLOG-BLOCK: loop_exiting_bb1.1:
; PROLOG-BLOCK-NEXT: switch i64 %sum.next, label %loop_latch.1 [
-; PROLOG-BLOCK-NEXT: i64 24, label %exit1.loopexit
-; PROLOG-BLOCK-NEXT: i64 42, label %exit3.loopexit
+; PROLOG-BLOCK-NEXT: i64 24, label %exit1.loopexit
+; PROLOG-BLOCK-NEXT: i64 42, label %exit3.loopexit
; PROLOG-BLOCK-NEXT: ]
; PROLOG-BLOCK: loop_latch.1:
; PROLOG-BLOCK-NEXT: %iv_next.1 = add nuw nsw i64 %iv, 2
@@ -1293,7 +1293,7 @@ define i32 @hdr_latch_same_exit(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-NEXT: %sum.02.unr.ph = phi i32 [ %add.7, %latch.7 ]
; EPILOG-NEXT: br label %latchExit.unr-lcssa
; EPILOG: latchExit.unr-lcssa:
-; EPILOG-NEXT: %result.ph = phi i32 [ undef, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %result.ph = phi i32 [ poison, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
@@ -1377,7 +1377,7 @@ define i32 @hdr_latch_same_exit(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-BLOCK-NEXT: %sum.02.unr.ph = phi i32 [ %add.1, %latch.1 ]
; EPILOG-BLOCK-NEXT: br label %latchExit.unr-lcssa
; EPILOG-BLOCK: latchExit.unr-lcssa:
-; EPILOG-BLOCK-NEXT: %result.ph = phi i32 [ undef, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %result.ph = phi i32 [ poison, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
@@ -1733,7 +1733,7 @@ define i32 @otherblock_latch_same_exit(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-NEXT: %sum.02.unr.ph = phi i32 [ %add.7, %latch.7 ]
; EPILOG-NEXT: br label %latchExit.unr-lcssa
; EPILOG: latchExit.unr-lcssa:
-; EPILOG-NEXT: %result.ph = phi i32 [ undef, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %result.ph = phi i32 [ poison, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
@@ -1817,7 +1817,7 @@ define i32 @otherblock_latch_same_exit(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-BLOCK-NEXT: %sum.02.unr.ph = phi i32 [ %add.1, %latch.1 ]
; EPILOG-BLOCK-NEXT: br label %latchExit.unr-lcssa
; EPILOG-BLOCK: latchExit.unr-lcssa:
-; EPILOG-BLOCK-NEXT: %result.ph = phi i32 [ undef, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %result.ph = phi i32 [ poison, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
@@ -2174,7 +2174,7 @@ define i32 @otherblock_latch_same_exit2(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-NEXT: %sum.02.unr.ph = phi i32 [ %add.7, %latch.7 ]
; EPILOG-NEXT: br label %latchExit.unr-lcssa
; EPILOG: latchExit.unr-lcssa:
-; EPILOG-NEXT: %result.ph = phi i32 [ undef, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %result.ph = phi i32 [ poison, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
@@ -2258,7 +2258,7 @@ define i32 @otherblock_latch_same_exit2(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-BLOCK-NEXT: %sum.02.unr.ph = phi i32 [ %add.1, %latch.1 ]
; EPILOG-BLOCK-NEXT: br label %latchExit.unr-lcssa
; EPILOG-BLOCK: latchExit.unr-lcssa:
-; EPILOG-BLOCK-NEXT: %result.ph = phi i32 [ undef, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %result.ph = phi i32 [ poison, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
@@ -2616,7 +2616,7 @@ define i32 @otherblock_latch_same_exit3(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-NEXT: %sum.02.unr.ph = phi i32 [ %add.7, %latch.7 ]
; EPILOG-NEXT: br label %latchExit.unr-lcssa
; EPILOG: latchExit.unr-lcssa:
-; EPILOG-NEXT: %result.ph = phi i32 [ undef, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %result.ph = phi i32 [ poison, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
@@ -2700,7 +2700,7 @@ define i32 @otherblock_latch_same_exit3(ptr nocapture %a, i64 %n, i1 %cond) {
; EPILOG-BLOCK-NEXT: %sum.02.unr.ph = phi i32 [ %add.1, %latch.1 ]
; EPILOG-BLOCK-NEXT: br label %latchExit.unr-lcssa
; EPILOG-BLOCK: latchExit.unr-lcssa:
-; EPILOG-BLOCK-NEXT: %result.ph = phi i32 [ undef, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %result.ph = phi i32 [ poison, %entry ], [ %result.ph.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
@@ -3060,7 +3060,7 @@ define void @unique_exit(i32 %N, i32 %M) {
; EPILOG-NEXT: %i4.unr.ph = phi i32 [ %inc.7, %latch.7 ]
; EPILOG-NEXT: br label %latchExit.unr-lcssa
; EPILOG: latchExit.unr-lcssa:
-; EPILOG-NEXT: %i2.ph.ph = phi i32 [ undef, %preheader ], [ %i2.ph.ph.ph, %latchExit.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %i2.ph.ph = phi i32 [ poison, %preheader ], [ %i2.ph.ph.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-NEXT: %i4.unr = phi i32 [ 0, %preheader ], [ %i4.unr.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i32 %xtraiter, 0
; EPILOG-NEXT: br i1 %lcmp.mod, label %header.epil.preheader, label %latchExit
@@ -3121,7 +3121,7 @@ define void @unique_exit(i32 %N, i32 %M) {
; EPILOG-BLOCK-NEXT: %i4.unr.ph = phi i32 [ %inc.1, %latch.1 ]
; EPILOG-BLOCK-NEXT: br label %latchExit.unr-lcssa
; EPILOG-BLOCK: latchExit.unr-lcssa:
-; EPILOG-BLOCK-NEXT: %i2.ph.ph = phi i32 [ undef, %preheader ], [ %i2.ph.ph.ph, %latchExit.unr-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %i2.ph.ph = phi i32 [ poison, %preheader ], [ %i2.ph.ph.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %i4.unr = phi i32 [ 0, %preheader ], [ %i4.unr.ph, %latchExit.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i32 %xtraiter, 0
; EPILOG-BLOCK-NEXT: br i1 %lcmp.mod, label %header.epil.preheader, label %latchExit
@@ -3312,8 +3312,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; EPILOG: loop_exiting:
; EPILOG-NEXT: %ivy = add i64 %iv, %add
; EPILOG-NEXT: switch i64 %sum, label %loop_latch [
-; EPILOG-NEXT: i64 24, label %exit1.loopexit
-; EPILOG-NEXT: i64 42, label %exit1.loopexit
+; EPILOG-NEXT: i64 24, label %exit1.loopexit
+; EPILOG-NEXT: i64 42, label %exit1.loopexit
; EPILOG-NEXT: ]
; EPILOG: loop_latch:
; EPILOG-NEXT: %iv_next = add nuw nsw i64 %iv, 1
@@ -3322,8 +3322,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; EPILOG: loop_exiting.1:
; EPILOG-NEXT: %ivy.1 = add i64 %iv_next, %add
; EPILOG-NEXT: switch i64 %sum.next, label %loop_latch.1 [
-; EPILOG-NEXT: i64 24, label %exit1.loopexit
-; EPILOG-NEXT: i64 42, label %exit1.loopexit
+; EPILOG-NEXT: i64 24, label %exit1.loopexit
+; EPILOG-NEXT: i64 42, label %exit1.loopexit
; EPILOG-NEXT: ]
; EPILOG: loop_latch.1:
; EPILOG-NEXT: %iv_next.1 = add nuw nsw i64 %iv, 2
@@ -3332,8 +3332,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; EPILOG: loop_exiting.2:
; EPILOG-NEXT: %ivy.2 = add i64 %iv_next.1, %add
; EPILOG-NEXT: switch i64 %sum.next.1, label %loop_latch.2 [
-; EPILOG-NEXT: i64 24, label %exit1.loopexit
-; EPILOG-NEXT: i64 42, label %exit1.loopexit
+; EPILOG-NEXT: i64 24, label %exit1.loopexit
+; EPILOG-NEXT: i64 42, label %exit1.loopexit
; EPILOG-NEXT: ]
; EPILOG: loop_latch.2:
; EPILOG-NEXT: %iv_next.2 = add nuw nsw i64 %iv, 3
@@ -3342,8 +3342,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; EPILOG: loop_exiting.3:
; EPILOG-NEXT: %ivy.3 = add i64 %iv_next.2, %add
; EPILOG-NEXT: switch i64 %sum.next.2, label %loop_latch.3 [
-; EPILOG-NEXT: i64 24, label %exit1.loopexit
-; EPILOG-NEXT: i64 42, label %exit1.loopexit
+; EPILOG-NEXT: i64 24, label %exit1.loopexit
+; EPILOG-NEXT: i64 42, label %exit1.loopexit
; EPILOG-NEXT: ]
; EPILOG: loop_latch.3:
; EPILOG-NEXT: %iv_next.3 = add nuw nsw i64 %iv, 4
@@ -3352,8 +3352,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; EPILOG: loop_exiting.4:
; EPILOG-NEXT: %ivy.4 = add i64 %iv_next.3, %add
; EPILOG-NEXT: switch i64 %sum.next.3, label %loop_latch.4 [
-; EPILOG-NEXT: i64 24, label %exit1.loopexit
-; EPILOG-NEXT: i64 42, label %exit1.loopexit
+; EPILOG-NEXT: i64 24, label %exit1.loopexit
+; EPILOG-NEXT: i64 42, label %exit1.loopexit
; EPILOG-NEXT: ]
; EPILOG: loop_latch.4:
; EPILOG-NEXT: %iv_next.4 = add nuw nsw i64 %iv, 5
@@ -3362,8 +3362,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; EPILOG: loop_exiting.5:
; EPILOG-NEXT: %ivy.5 = add i64 %iv_next.4, %add
; EPILOG-NEXT: switch i64 %sum.next.4, label %loop_latch.5 [
-; EPILOG-NEXT: i64 24, label %exit1.loopexit
-; EPILOG-NEXT: i64 42, label %exit1.loopexit
+; EPILOG-NEXT: i64 24, label %exit1.loopexit
+; EPILOG-NEXT: i64 42, label %exit1.loopexit
; EPILOG-NEXT: ]
; EPILOG: loop_latch.5:
; EPILOG-NEXT: %iv_next.5 = add nuw nsw i64 %iv, 6
@@ -3372,8 +3372,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; EPILOG: loop_exiting.6:
; EPILOG-NEXT: %ivy.6 = add i64 %iv_next.5, %add
; EPILOG-NEXT: switch i64 %sum.next.5, label %loop_latch.6 [
-; EPILOG-NEXT: i64 24, label %exit1.loopexit
-; EPILOG-NEXT: i64 42, label %exit1.loopexit
+; EPILOG-NEXT: i64 24, label %exit1.loopexit
+; EPILOG-NEXT: i64 42, label %exit1.loopexit
; EPILOG-NEXT: ]
; EPILOG: loop_latch.6:
; EPILOG-NEXT: %iv_next.6 = add nuw nsw i64 %iv, 7
@@ -3382,8 +3382,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; EPILOG: loop_exiting.7:
; EPILOG-NEXT: %ivy.7 = add i64 %iv_next.6, %add
; EPILOG-NEXT: switch i64 %sum.next.6, label %loop_latch.7 [
-; EPILOG-NEXT: i64 24, label %exit1.loopexit
-; EPILOG-NEXT: i64 42, label %exit1.loopexit
+; EPILOG-NEXT: i64 24, label %exit1.loopexit
+; EPILOG-NEXT: i64 42, label %exit1.loopexit
; EPILOG-NEXT: ]
; EPILOG: loop_latch.7:
; EPILOG-NEXT: %iv_next.7 = add nuw nsw i64 %iv, 8
@@ -3406,7 +3406,7 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; EPILOG-NEXT: %sum.unr.ph = phi i64 [ %sum.next.7, %loop_latch.7 ]
; EPILOG-NEXT: br label %latchexit.unr-lcssa
; EPILOG: latchexit.unr-lcssa:
-; EPILOG-NEXT: %sum.next.lcssa.ph = phi i64 [ undef, %entry ], [ %sum.next.lcssa.ph.ph, %latchexit.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %sum.next.lcssa.ph = phi i64 [ poison, %entry ], [ %sum.next.lcssa.ph.ph, %latchexit.unr-lcssa.loopexit ]
; EPILOG-NEXT: %iv.unr = phi i64 [ 0, %entry ], [ %iv.unr.ph, %latchexit.unr-lcssa.loopexit ]
; EPILOG-NEXT: %sum.unr = phi i64 [ 0, %entry ], [ %sum.unr.ph, %latchexit.unr-lcssa.loopexit ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
@@ -3421,8 +3421,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; EPILOG: loop_exiting.epil:
; EPILOG-NEXT: %ivy.epil = add i64 %iv.epil, %add
; EPILOG-NEXT: switch i64 %sum.epil, label %loop_latch.epil [
-; EPILOG-NEXT: i64 24, label %exit1.loopexit2
-; EPILOG-NEXT: i64 42, label %exit1.loopexit2
+; EPILOG-NEXT: i64 24, label %exit1.loopexit2
+; EPILOG-NEXT: i64 42, label %exit1.loopexit2
; EPILOG-NEXT: ]
; EPILOG: loop_latch.epil:
; EPILOG-NEXT: %iv_next.epil = add nuw nsw i64 %iv.epil, 1
@@ -3456,8 +3456,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; EPILOG-BLOCK: loop_exiting:
; EPILOG-BLOCK-NEXT: %ivy = add i64 %iv, %add
; EPILOG-BLOCK-NEXT: switch i64 %sum, label %loop_latch [
-; EPILOG-BLOCK-NEXT: i64 24, label %exit1.loopexit
-; EPILOG-BLOCK-NEXT: i64 42, label %exit1.loopexit
+; EPILOG-BLOCK-NEXT: i64 24, label %exit1.loopexit
+; EPILOG-BLOCK-NEXT: i64 42, label %exit1.loopexit
; EPILOG-BLOCK-NEXT: ]
; EPILOG-BLOCK: loop_latch:
; EPILOG-BLOCK-NEXT: %iv_next = add nuw nsw i64 %iv, 1
@@ -3466,8 +3466,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; EPILOG-BLOCK: loop_exiting.1:
; EPILOG-BLOCK-NEXT: %ivy.1 = add i64 %iv_next, %add
; EPILOG-BLOCK-NEXT: switch i64 %sum.next, label %loop_latch.1 [
-; EPILOG-BLOCK-NEXT: i64 24, label %exit1.loopexit
-; EPILOG-BLOCK-NEXT: i64 42, label %exit1.loopexit
+; EPILOG-BLOCK-NEXT: i64 24, label %exit1.loopexit
+; EPILOG-BLOCK-NEXT: i64 42, label %exit1.loopexit
; EPILOG-BLOCK-NEXT: ]
; EPILOG-BLOCK: loop_latch.1:
; EPILOG-BLOCK-NEXT: %iv_next.1 = add nuw nsw i64 %iv, 2
@@ -3487,7 +3487,7 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; EPILOG-BLOCK-NEXT: %sum.unr.ph = phi i64 [ %sum.next.1, %loop_latch.1 ]
; EPILOG-BLOCK-NEXT: br label %latchexit.unr-lcssa
; EPILOG-BLOCK: latchexit.unr-lcssa:
-; EPILOG-BLOCK-NEXT: %sum.next.lcssa.ph = phi i64 [ undef, %entry ], [ %sum.next.lcssa.ph.ph, %latchexit.unr-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %sum.next.lcssa.ph = phi i64 [ poison, %entry ], [ %sum.next.lcssa.ph.ph, %latchexit.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %iv.unr = phi i64 [ 0, %entry ], [ %iv.unr.ph, %latchexit.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %sum.unr = phi i64 [ 0, %entry ], [ %sum.unr.ph, %latchexit.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
@@ -3499,8 +3499,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; EPILOG-BLOCK: loop_exiting.epil:
; EPILOG-BLOCK-NEXT: %ivy.epil = add i64 %iv.unr, %add
; EPILOG-BLOCK-NEXT: switch i64 %sum.unr, label %loop_latch.epil [
-; EPILOG-BLOCK-NEXT: i64 24, label %exit1
-; EPILOG-BLOCK-NEXT: i64 42, label %exit1
+; EPILOG-BLOCK-NEXT: i64 24, label %exit1
+; EPILOG-BLOCK-NEXT: i64 42, label %exit1
; EPILOG-BLOCK-NEXT: ]
; EPILOG-BLOCK: loop_latch.epil:
; EPILOG-BLOCK-NEXT: %sum.next.epil = add i64 %sum.unr, %add
@@ -3526,8 +3526,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; PROLOG: loop_exiting.prol:
; PROLOG-NEXT: %ivy.prol = add i64 %iv.prol, %add
; PROLOG-NEXT: switch i64 %sum.prol, label %loop_latch.prol [
-; PROLOG-NEXT: i64 24, label %exit1.loopexit1
-; PROLOG-NEXT: i64 42, label %exit1.loopexit1
+; PROLOG-NEXT: i64 24, label %exit1.loopexit1
+; PROLOG-NEXT: i64 42, label %exit1.loopexit1
; PROLOG-NEXT: ]
; PROLOG: loop_latch.prol:
; PROLOG-NEXT: %iv_next.prol = add nuw nsw i64 %iv.prol, 1
@@ -3556,8 +3556,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; PROLOG: loop_exiting:
; PROLOG-NEXT: %ivy = add i64 %iv, %add
; PROLOG-NEXT: switch i64 %sum, label %loop_latch [
-; PROLOG-NEXT: i64 24, label %exit1.loopexit
-; PROLOG-NEXT: i64 42, label %exit1.loopexit
+; PROLOG-NEXT: i64 24, label %exit1.loopexit
+; PROLOG-NEXT: i64 42, label %exit1.loopexit
; PROLOG-NEXT: ]
; PROLOG: loop_latch:
; PROLOG-NEXT: %iv_next = add nuw nsw i64 %iv, 1
@@ -3566,8 +3566,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; PROLOG: loop_exiting.1:
; PROLOG-NEXT: %ivy.1 = add i64 %iv_next, %add
; PROLOG-NEXT: switch i64 %sum.next, label %loop_latch.1 [
-; PROLOG-NEXT: i64 24, label %exit1.loopexit
-; PROLOG-NEXT: i64 42, label %exit1.loopexit
+; PROLOG-NEXT: i64 24, label %exit1.loopexit
+; PROLOG-NEXT: i64 42, label %exit1.loopexit
; PROLOG-NEXT: ]
; PROLOG: loop_latch.1:
; PROLOG-NEXT: %iv_next.1 = add nuw nsw i64 %iv, 2
@@ -3576,8 +3576,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; PROLOG: loop_exiting.2:
; PROLOG-NEXT: %ivy.2 = add i64 %iv_next.1, %add
; PROLOG-NEXT: switch i64 %sum.next.1, label %loop_latch.2 [
-; PROLOG-NEXT: i64 24, label %exit1.loopexit
-; PROLOG-NEXT: i64 42, label %exit1.loopexit
+; PROLOG-NEXT: i64 24, label %exit1.loopexit
+; PROLOG-NEXT: i64 42, label %exit1.loopexit
; PROLOG-NEXT: ]
; PROLOG: loop_latch.2:
; PROLOG-NEXT: %iv_next.2 = add nuw nsw i64 %iv, 3
@@ -3586,8 +3586,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; PROLOG: loop_exiting.3:
; PROLOG-NEXT: %ivy.3 = add i64 %iv_next.2, %add
; PROLOG-NEXT: switch i64 %sum.next.2, label %loop_latch.3 [
-; PROLOG-NEXT: i64 24, label %exit1.loopexit
-; PROLOG-NEXT: i64 42, label %exit1.loopexit
+; PROLOG-NEXT: i64 24, label %exit1.loopexit
+; PROLOG-NEXT: i64 42, label %exit1.loopexit
; PROLOG-NEXT: ]
; PROLOG: loop_latch.3:
; PROLOG-NEXT: %iv_next.3 = add nuw nsw i64 %iv, 4
@@ -3596,8 +3596,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; PROLOG: loop_exiting.4:
; PROLOG-NEXT: %ivy.4 = add i64 %iv_next.3, %add
; PROLOG-NEXT: switch i64 %sum.next.3, label %loop_latch.4 [
-; PROLOG-NEXT: i64 24, label %exit1.loopexit
-; PROLOG-NEXT: i64 42, label %exit1.loopexit
+; PROLOG-NEXT: i64 24, label %exit1.loopexit
+; PROLOG-NEXT: i64 42, label %exit1.loopexit
; PROLOG-NEXT: ]
; PROLOG: loop_latch.4:
; PROLOG-NEXT: %iv_next.4 = add nuw nsw i64 %iv, 5
@@ -3606,8 +3606,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; PROLOG: loop_exiting.5:
; PROLOG-NEXT: %ivy.5 = add i64 %iv_next.4, %add
; PROLOG-NEXT: switch i64 %sum.next.4, label %loop_latch.5 [
-; PROLOG-NEXT: i64 24, label %exit1.loopexit
-; PROLOG-NEXT: i64 42, label %exit1.loopexit
+; PROLOG-NEXT: i64 24, label %exit1.loopexit
+; PROLOG-NEXT: i64 42, label %exit1.loopexit
; PROLOG-NEXT: ]
; PROLOG: loop_latch.5:
; PROLOG-NEXT: %iv_next.5 = add nuw nsw i64 %iv, 6
@@ -3616,8 +3616,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; PROLOG: loop_exiting.6:
; PROLOG-NEXT: %ivy.6 = add i64 %iv_next.5, %add
; PROLOG-NEXT: switch i64 %sum.next.5, label %loop_latch.6 [
-; PROLOG-NEXT: i64 24, label %exit1.loopexit
-; PROLOG-NEXT: i64 42, label %exit1.loopexit
+; PROLOG-NEXT: i64 24, label %exit1.loopexit
+; PROLOG-NEXT: i64 42, label %exit1.loopexit
; PROLOG-NEXT: ]
; PROLOG: loop_latch.6:
; PROLOG-NEXT: %iv_next.6 = add nuw nsw i64 %iv, 7
@@ -3626,8 +3626,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; PROLOG: loop_exiting.7:
; PROLOG-NEXT: %ivy.7 = add i64 %iv_next.6, %add
; PROLOG-NEXT: switch i64 %sum.next.6, label %loop_latch.7 [
-; PROLOG-NEXT: i64 24, label %exit1.loopexit
-; PROLOG-NEXT: i64 42, label %exit1.loopexit
+; PROLOG-NEXT: i64 24, label %exit1.loopexit
+; PROLOG-NEXT: i64 42, label %exit1.loopexit
; PROLOG-NEXT: ]
; PROLOG: loop_latch.7:
; PROLOG-NEXT: %iv_next.7 = add nuw nsw i64 %iv, 8
@@ -3663,8 +3663,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; PROLOG-BLOCK-NEXT: br i1 %cond, label %loop_latch.prol, label %loop_exiting.prol
; PROLOG-BLOCK: loop_exiting.prol:
; PROLOG-BLOCK-NEXT: switch i64 0, label %loop_latch.prol [
-; PROLOG-BLOCK-NEXT: i64 24, label %exit1
-; PROLOG-BLOCK-NEXT: i64 42, label %exit1
+; PROLOG-BLOCK-NEXT: i64 24, label %exit1
+; PROLOG-BLOCK-NEXT: i64 42, label %exit1
; PROLOG-BLOCK-NEXT: ]
; PROLOG-BLOCK: loop_latch.prol:
; PROLOG-BLOCK-NEXT: br label %loop_header.prol.loopexit
@@ -3683,8 +3683,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; PROLOG-BLOCK: loop_exiting:
; PROLOG-BLOCK-NEXT: %ivy = add i64 %iv, %add
; PROLOG-BLOCK-NEXT: switch i64 %sum, label %loop_latch [
-; PROLOG-BLOCK-NEXT: i64 24, label %exit1.loopexit
-; PROLOG-BLOCK-NEXT: i64 42, label %exit1.loopexit
+; PROLOG-BLOCK-NEXT: i64 24, label %exit1.loopexit
+; PROLOG-BLOCK-NEXT: i64 42, label %exit1.loopexit
; PROLOG-BLOCK-NEXT: ]
; PROLOG-BLOCK: loop_latch:
; PROLOG-BLOCK-NEXT: %iv_next = add nuw nsw i64 %iv, 1
@@ -3693,8 +3693,8 @@ define i64 @test5(i64 %trip, i64 %add, i1 %cond) {
; PROLOG-BLOCK: loop_exiting.1:
; PROLOG-BLOCK-NEXT: %ivy.1 = add i64 %iv_next, %add
; PROLOG-BLOCK-NEXT: switch i64 %sum.next, label %loop_latch.1 [
-; PROLOG-BLOCK-NEXT: i64 24, label %exit1.loopexit
-; PROLOG-BLOCK-NEXT: i64 42, label %exit1.loopexit
+; PROLOG-BLOCK-NEXT: i64 24, label %exit1.loopexit
+; PROLOG-BLOCK-NEXT: i64 42, label %exit1.loopexit
; PROLOG-BLOCK-NEXT: ]
; PROLOG-BLOCK: loop_latch.1:
; PROLOG-BLOCK-NEXT: %iv_next.1 = add nuw nsw i64 %iv, 2
@@ -3841,7 +3841,7 @@ define i32 @test6(ptr nocapture %a, i64 %n, i1 %cond, i32 %x) {
; EPILOG-NEXT: %sum.02.unr.ph = phi i32 [ %add.7, %latch.7 ]
; EPILOG-NEXT: br label %latch_exit.unr-lcssa
; EPILOG: latch_exit.unr-lcssa:
-; EPILOG-NEXT: %sum.0.lcssa.ph = phi i32 [ undef, %entry ], [ %sum.0.lcssa.ph.ph, %latch_exit.unr-lcssa.loopexit ]
+; EPILOG-NEXT: %sum.0.lcssa.ph = phi i32 [ poison, %entry ], [ %sum.0.lcssa.ph.ph, %latch_exit.unr-lcssa.loopexit ]
; EPILOG-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %latch_exit.unr-lcssa.loopexit ]
; EPILOG-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %latch_exit.unr-lcssa.loopexit ]
; EPILOG-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
@@ -3927,7 +3927,7 @@ define i32 @test6(ptr nocapture %a, i64 %n, i1 %cond, i32 %x) {
; EPILOG-BLOCK-NEXT: %sum.02.unr.ph = phi i32 [ %add.1, %latch.1 ]
; EPILOG-BLOCK-NEXT: br label %latch_exit.unr-lcssa
; EPILOG-BLOCK: latch_exit.unr-lcssa:
-; EPILOG-BLOCK-NEXT: %sum.0.lcssa.ph = phi i32 [ undef, %entry ], [ %sum.0.lcssa.ph.ph, %latch_exit.unr-lcssa.loopexit ]
+; EPILOG-BLOCK-NEXT: %sum.0.lcssa.ph = phi i32 [ poison, %entry ], [ %sum.0.lcssa.ph.ph, %latch_exit.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %indvars.iv.unr = phi i64 [ 0, %entry ], [ %indvars.iv.unr.ph, %latch_exit.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %sum.02.unr = phi i32 [ 0, %entry ], [ %sum.02.unr.ph, %latch_exit.unr-lcssa.loopexit ]
; EPILOG-BLOCK-NEXT: %lcmp.mod = icmp ne i64 %xtraiter, 0
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-loop5.ll b/llvm/test/Transforms/LoopUnroll/runtime-loop5.ll
index b44206a044c29..fa9f9026d524c 100644
--- a/llvm/test/Transforms/LoopUnroll/runtime-loop5.ll
+++ b/llvm/test/Transforms/LoopUnroll/runtime-loop5.ll
@@ -102,7 +102,7 @@ define i3 @test(ptr %a, i3 %n) {
; UNROLL-4-NEXT: [[SUM_02_UNR_PH:%.*]] = phi i3 [ [[ADD_3]], [[FOR_BODY]] ]
; UNROLL-4-NEXT: br label [[FOR_END_LOOPEXIT_UNR_LCSSA]]
; UNROLL-4: for.end.loopexit.unr-lcssa:
-; UNROLL-4-NEXT: [[ADD_LCSSA_PH:%.*]] = phi i3 [ undef, [[FOR_BODY_PREHEADER]] ], [ [[ADD_LCSSA_PH_PH]], [[FOR_END_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
+; UNROLL-4-NEXT: [[ADD_LCSSA_PH:%.*]] = phi i3 [ poison, [[FOR_BODY_PREHEADER]] ], [ [[ADD_LCSSA_PH_PH]], [[FOR_END_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
; UNROLL-4-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[FOR_BODY_PREHEADER]] ], [ [[INDVARS_IV_UNR_PH]], [[FOR_END_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
; UNROLL-4-NEXT: [[SUM_02_UNR:%.*]] = phi i3 [ 0, [[FOR_BODY_PREHEADER]] ], [ [[SUM_02_UNR_PH]], [[FOR_END_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
; UNROLL-4-NEXT: [[LCMP_MOD:%.*]] = icmp ne i3 [[XTRAITER]], 0
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-multiexit-heuristic.ll b/llvm/test/Transforms/LoopUnroll/runtime-multiexit-heuristic.ll
index 75222e5ee1371..022bd6febe327 100644
--- a/llvm/test/Transforms/LoopUnroll/runtime-multiexit-heuristic.ll
+++ b/llvm/test/Transforms/LoopUnroll/runtime-multiexit-heuristic.ll
@@ -98,7 +98,7 @@ define i32 @test1(ptr nocapture %a, i64 %n) {
; CHECK: latchexit.unr-lcssa.loopexit:
; CHECK-NEXT: br label [[LATCHEXIT_UNR_LCSSA]]
; CHECK: latchexit.unr-lcssa:
-; CHECK-NEXT: [[SUM_0_LCSSA_PH:%.*]] = phi i32 [ undef, [[ENTRY:%.*]] ], [ [[ADD_7]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[SUM_0_LCSSA_PH:%.*]] = phi i32 [ poison, [[ENTRY:%.*]] ], [ [[ADD_7]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY]] ], [ [[INDVARS_IV_NEXT_7]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[SUM_02_UNR:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[ADD_7]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[LCMP_MOD_NOT:%.*]] = icmp eq i64 [[XTRAITER]], 0
@@ -255,7 +255,7 @@ define i32 @test1(ptr nocapture %a, i64 %n) {
; ENABLED-NEXT: [[SUM_02_UNR_PH:%.*]] = phi i32 [ [[ADD_7]], [[LATCH_7]] ]
; ENABLED-NEXT: br label [[LATCHEXIT_UNR_LCSSA]]
; ENABLED: latchexit.unr-lcssa:
-; ENABLED-NEXT: [[SUM_0_LCSSA_PH:%.*]] = phi i32 [ undef, [[ENTRY:%.*]] ], [ [[SUM_0_LCSSA_PH_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
+; ENABLED-NEXT: [[SUM_0_LCSSA_PH:%.*]] = phi i32 [ poison, [[ENTRY:%.*]] ], [ [[SUM_0_LCSSA_PH_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
; ENABLED-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY]] ], [ [[INDVARS_IV_UNR_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
; ENABLED-NEXT: [[SUM_02_UNR:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[SUM_02_UNR_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
; ENABLED-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
@@ -469,7 +469,7 @@ define i32 @test2(ptr nocapture %a, i64 %n) {
; ENABLED-NEXT: [[SUM_02_UNR_PH:%.*]] = phi i32 [ [[ADD_7]], [[LATCH_7]] ]
; ENABLED-NEXT: br label [[LATCHEXIT_UNR_LCSSA]]
; ENABLED: latchexit.unr-lcssa:
-; ENABLED-NEXT: [[SUM_0_LCSSA_PH:%.*]] = phi i32 [ undef, [[ENTRY:%.*]] ], [ [[SUM_0_LCSSA_PH_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
+; ENABLED-NEXT: [[SUM_0_LCSSA_PH:%.*]] = phi i32 [ poison, [[ENTRY:%.*]] ], [ [[SUM_0_LCSSA_PH_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
; ENABLED-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY]] ], [ [[INDVARS_IV_UNR_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
; ENABLED-NEXT: [[SUM_02_UNR:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[SUM_02_UNR_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
; ENABLED-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
@@ -826,7 +826,7 @@ define i32 @test5(ptr nocapture %a, i64 %n) {
; CHECK: latchexit.unr-lcssa.loopexit:
; CHECK-NEXT: br label [[LATCHEXIT_UNR_LCSSA]]
; CHECK: latchexit.unr-lcssa:
-; CHECK-NEXT: [[SUM_0_LCSSA_PH:%.*]] = phi i32 [ undef, [[ENTRY:%.*]] ], [ [[ADD_7]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[SUM_0_LCSSA_PH:%.*]] = phi i32 [ poison, [[ENTRY:%.*]] ], [ [[ADD_7]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY]] ], [ [[INDVARS_IV_NEXT_7]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[SUM_02_UNR:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[ADD_7]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[LCMP_MOD_NOT:%.*]] = icmp eq i64 [[XTRAITER]], 0
@@ -988,7 +988,7 @@ define i32 @test5(ptr nocapture %a, i64 %n) {
; ENABLED-NEXT: [[SUM_02_UNR_PH:%.*]] = phi i32 [ [[ADD_7]], [[LATCH_7]] ]
; ENABLED-NEXT: br label [[LATCHEXIT_UNR_LCSSA]]
; ENABLED: latchexit.unr-lcssa:
-; ENABLED-NEXT: [[SUM_0_LCSSA_PH:%.*]] = phi i32 [ undef, [[ENTRY:%.*]] ], [ [[SUM_0_LCSSA_PH_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
+; ENABLED-NEXT: [[SUM_0_LCSSA_PH:%.*]] = phi i32 [ poison, [[ENTRY:%.*]] ], [ [[SUM_0_LCSSA_PH_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
; ENABLED-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[ENTRY]] ], [ [[INDVARS_IV_UNR_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
; ENABLED-NEXT: [[SUM_02_UNR:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[SUM_02_UNR_PH]], [[LATCHEXIT_UNR_LCSSA_LOOPEXIT]] ]
; ENABLED-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-unroll-remainder.ll b/llvm/test/Transforms/LoopUnroll/runtime-unroll-remainder.ll
index fea9df610c3e8..4307be7a8b5a7 100644
--- a/llvm/test/Transforms/LoopUnroll/runtime-unroll-remainder.ll
+++ b/llvm/test/Transforms/LoopUnroll/runtime-unroll-remainder.ll
@@ -18,7 +18,7 @@ define i32 @unroll(ptr nocapture readonly %a, ptr nocapture readonly %b, i32 %N)
; CHECK: for.cond.cleanup.loopexit.unr-lcssa.loopexit:
; CHECK-NEXT: br label [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA]]
; CHECK: for.cond.cleanup.loopexit.unr-lcssa:
-; CHECK-NEXT: [[ADD_LCSSA_PH:%.*]] = phi i32 [ undef, [[FOR_BODY_LR_PH]] ], [ [[ADD_3:%.*]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT:%.*]] ]
+; CHECK-NEXT: [[ADD_LCSSA_PH:%.*]] = phi i32 [ poison, [[FOR_BODY_LR_PH]] ], [ [[ADD_3:%.*]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT:%.*]] ]
; CHECK-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ 0, [[FOR_BODY_LR_PH]] ], [ [[INDVARS_IV_NEXT_3:%.*]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[C_010_UNR:%.*]] = phi i32 [ 0, [[FOR_BODY_LR_PH]] ], [ [[ADD_3]], [[FOR_COND_CLEANUP_LOOPEXIT_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[LCMP_MOD_NOT:%.*]] = icmp eq i64 [[XTRAITER]], 0
diff --git a/llvm/test/Transforms/LoopUnroll/tripcount-overflow.ll b/llvm/test/Transforms/LoopUnroll/tripcount-overflow.ll
index 0e4c73e5e5534..972a2bfc2647e 100644
--- a/llvm/test/Transforms/LoopUnroll/tripcount-overflow.ll
+++ b/llvm/test/Transforms/LoopUnroll/tripcount-overflow.ll
@@ -34,7 +34,7 @@ define i32 @foo(i32 %N) {
; EPILOG-NEXT: [[I_UNR_PH:%.*]] = phi i32 [ [[INC_1]], [[WHILE_BODY]] ]
; EPILOG-NEXT: br label [[WHILE_END_UNR_LCSSA]]
; EPILOG: while.end.unr-lcssa:
-; EPILOG-NEXT: [[I_LCSSA_PH:%.*]] = phi i32 [ undef, [[ENTRY:%.*]] ], [ [[I_LCSSA_PH_PH]], [[WHILE_END_UNR_LCSSA_LOOPEXIT]] ]
+; EPILOG-NEXT: [[I_LCSSA_PH:%.*]] = phi i32 [ poison, [[ENTRY:%.*]] ], [ [[I_LCSSA_PH_PH]], [[WHILE_END_UNR_LCSSA_LOOPEXIT]] ]
; EPILOG-NEXT: [[I_UNR:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[I_UNR_PH]], [[WHILE_END_UNR_LCSSA_LOOPEXIT]] ]
; EPILOG-NEXT: [[LCMP_MOD:%.*]] = icmp ne i32 [[XTRAITER]], 0
; EPILOG-NEXT: br i1 [[LCMP_MOD]], label [[WHILE_BODY_EPIL_PREHEADER:%.*]], label [[WHILE_END:%.*]]
diff --git a/llvm/test/Transforms/LoopUnrollAndJam/unroll-and-jam.ll b/llvm/test/Transforms/LoopUnrollAndJam/unroll-and-jam.ll
index f9f7da5fca6b4..89ce66767ccc9 100644
--- a/llvm/test/Transforms/LoopUnrollAndJam/unroll-and-jam.ll
+++ b/llvm/test/Transforms/LoopUnrollAndJam/unroll-and-jam.ll
@@ -639,8 +639,8 @@ define i32 @test6() #0 {
; CHECK-NEXT: [[P0_UNR_PH:%.*]] = phi i32 [ 2, [[FOR_LATCH]] ]
; CHECK-NEXT: br label [[FOR_END_UNR_LCSSA]]
; CHECK: for.end.unr-lcssa:
-; CHECK-NEXT: [[DOTLCSSA_LCSSA_PH:%.*]] = phi i32 [ undef, [[ENTRY:%.*]] ], [ [[DOTLCSSA_LCSSA_PH_PH]], [[FOR_END_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[INC_LCSSA_LCSSA_PH:%.*]] = phi i32 [ undef, [[ENTRY]] ], [ [[INC_LCSSA_LCSSA_PH_PH]], [[FOR_END_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[DOTLCSSA_LCSSA_PH:%.*]] = phi i32 [ poison, [[ENTRY:%.*]] ], [ [[DOTLCSSA_LCSSA_PH_PH]], [[FOR_END_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[INC_LCSSA_LCSSA_PH:%.*]] = phi i32 [ poison, [[ENTRY]] ], [ [[INC_LCSSA_LCSSA_PH_PH]], [[FOR_END_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: [[P0_UNR:%.*]] = phi i32 [ [[F_PROMOTED10]], [[ENTRY]] ], [ [[P0_UNR_PH]], [[FOR_END_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: br i1 true, label [[FOR_OUTER_EPIL_PREHEADER:%.*]], label [[FOR_END:%.*]]
; CHECK: for.outer.epil.preheader:
@@ -1324,9 +1324,9 @@ define signext i16 @test10(i32 %k) #0 {
; CHECK-NEXT: [[STOREMERGE_5_LCSSA_LCSSA_PH_PH:%.*]] = phi i32 [ 0, [[FOR_INC24]] ]
; CHECK-NEXT: br label [[FOR_END26_UNR_LCSSA]]
; CHECK: for.end26.unr-lcssa:
-; CHECK-NEXT: [[DEC_LCSSA_LCSSA_PH:%.*]] = phi i64 [ undef, [[ENTRY:%.*]] ], [ [[DEC_LCSSA_LCSSA_PH_PH]], [[FOR_END26_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[STOREMERGE_4_LCSSA_LCSSA_PH:%.*]] = phi i64 [ undef, [[ENTRY]] ], [ [[STOREMERGE_4_LCSSA_LCSSA_PH_PH]], [[FOR_END26_UNR_LCSSA_LOOPEXIT]] ]
-; CHECK-NEXT: [[STOREMERGE_5_LCSSA_LCSSA_PH:%.*]] = phi i32 [ undef, [[ENTRY]] ], [ [[STOREMERGE_5_LCSSA_LCSSA_PH_PH]], [[FOR_END26_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[DEC_LCSSA_LCSSA_PH:%.*]] = phi i64 [ poison, [[ENTRY:%.*]] ], [ [[DEC_LCSSA_LCSSA_PH_PH]], [[FOR_END26_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[STOREMERGE_4_LCSSA_LCSSA_PH:%.*]] = phi i64 [ poison, [[ENTRY]] ], [ [[STOREMERGE_4_LCSSA_LCSSA_PH_PH]], [[FOR_END26_UNR_LCSSA_LOOPEXIT]] ]
+; CHECK-NEXT: [[STOREMERGE_5_LCSSA_LCSSA_PH:%.*]] = phi i32 [ poison, [[ENTRY]] ], [ [[STOREMERGE_5_LCSSA_LCSSA_PH_PH]], [[FOR_END26_UNR_LCSSA_LOOPEXIT]] ]
; CHECK-NEXT: br i1 true, label [[FOR_BODY_EPIL_PREHEADER:%.*]], label [[FOR_END26:%.*]]
; CHECK: for.body.epil.preheader:
; CHECK-NEXT: br label [[FOR_BODY_EPIL:%.*]]
diff --git a/llvm/test/Transforms/LoopVectorize/X86/float-induction-x86.ll b/llvm/test/Transforms/LoopVectorize/X86/float-induction-x86.ll
index 59b8ce42380d9..cb4f5f6d9eaba 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/float-induction-x86.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/float-induction-x86.ll
@@ -309,7 +309,7 @@ define double @external_use_without_fast_math(ptr %a, i64 %n) {
; AUTO_VEC-NEXT: [[NITER_NCMP_7:%.*]] = icmp eq i64 [[NITER_NEXT_7]], [[UNROLL_ITER]]
; AUTO_VEC-NEXT: br i1 [[NITER_NCMP_7]], label [[FOR_END_UNR_LCSSA]], label [[FOR_BODY]]
; AUTO_VEC: for.end.unr-lcssa:
-; AUTO_VEC-NEXT: [[J_LCSSA_PH:%.*]] = phi double [ undef, [[ENTRY:%.*]] ], [ [[J_NEXT_6]], [[FOR_BODY]] ]
+; AUTO_VEC-NEXT: [[J_LCSSA_PH:%.*]] = phi double [ poison, [[ENTRY:%.*]] ], [ [[J_NEXT_6]], [[FOR_BODY]] ]
; AUTO_VEC-NEXT: [[I_UNR:%.*]] = phi i64 [ 0, [[ENTRY]] ], [ [[I_NEXT_7]], [[FOR_BODY]] ]
; AUTO_VEC-NEXT: [[J_UNR:%.*]] = phi double [ 0.000000e+00, [[ENTRY]] ], [ [[J_NEXT_7]], [[FOR_BODY]] ]
; AUTO_VEC-NEXT: [[LCMP_MOD_NOT:%.*]] = icmp eq i64 [[XTRAITER]], 0
More information about the llvm-commits
mailing list