Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SCEV] Disallow simplifying phi(undef, X) to X #115109

Merged
merged 4 commits into from
Nov 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion llvm/lib/Analysis/ScalarEvolution.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6023,7 +6023,11 @@ const SCEV *ScalarEvolution::createNodeForPHI(PHINode *PN) {
if (const SCEV *S = createAddRecFromPHI(PN))
return S;

if (Value *V = simplifyInstruction(PN, {getDataLayout(), &TLI, &DT, &AC}))
// We do not allow simplifying phi (undef, X) to X here, to avoid reusing the
// phi node for X.
if (Value *V = simplifyInstruction(
PN, {getDataLayout(), &TLI, &DT, &AC, /*CtxI=*/nullptr,
/*UseInstrInfo=*/true, /*CanUseUndef=*/false}))
return getSCEV(V);

if (const SCEV *S = createNodeFromSelectLikePHI(PN))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,14 @@ define i8 @test_pr52023(i1 %c.1, i1 %c.2) {
; CHECK-NEXT: br label [[LOOP_1:%.*]]
; CHECK: loop.1:
; CHECK-NEXT: [[INC79:%.*]] = phi i8 [ [[TMP0:%.*]], [[LOOP_1_LATCH:%.*]] ], [ 0, [[ENTRY:%.*]] ]
; CHECK-NEXT: [[TMP0]] = add i8 [[INC79]], 1
; CHECK-NEXT: [[TMP1:%.*]] = add i8 [[INC79]], 1
; CHECK-NEXT: br label [[LOOP_2:%.*]]
; CHECK: loop.2:
; CHECK-NEXT: br i1 [[C_1:%.*]], label [[LOOP_2_LATCH:%.*]], label [[LOOP_1_LATCH]]
; CHECK: loop.2.latch:
; CHECK-NEXT: br label [[LOOP_1_LATCH]]
; CHECK: loop.1.latch:
; CHECK-NEXT: [[TMP0]] = phi i8 [ [[TMP1]], [[LOOP_2_LATCH]] ], [ undef, [[LOOP_2]] ]
; CHECK-NEXT: br i1 [[C_2:%.*]], label [[EXIT:%.*]], label [[LOOP_1]]
; CHECK: exit:
; CHECK-NEXT: [[INC_LCSSA_LCSSA:%.*]] = phi i8 [ [[TMP0]], [[LOOP_1_LATCH]] ]
Expand Down
6 changes: 4 additions & 2 deletions llvm/test/Transforms/IndVarSimplify/no-iv-rewrite.ll
Original file line number Diff line number Diff line change
Expand Up @@ -260,11 +260,13 @@ define void @identityphi(i32 %limit) nounwind {
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP:%.*]]
; CHECK: loop:
; CHECK-NEXT: br i1 undef, label [[IF_THEN:%.*]], label [[CONTROL:%.*]]
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[CONTROL:%.*]] ]
; CHECK-NEXT: br i1 undef, label [[IF_THEN:%.*]], label [[CONTROL]]
; CHECK: if.then:
; CHECK-NEXT: br label [[CONTROL]]
; CHECK: control:
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 0, [[LIMIT:%.*]]
; CHECK-NEXT: [[IV_NEXT]] = phi i32 [ [[IV]], [[LOOP]] ], [ undef, [[IF_THEN]] ]
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[IV_NEXT]], [[LIMIT:%.*]]
; CHECK-NEXT: br i1 [[CMP]], label [[LOOP]], label [[EXIT:%.*]]
; CHECK: exit:
; CHECK-NEXT: ret void
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,29 +156,29 @@ define fastcc void @test3(ptr nocapture %u) nounwind uwtable ssp {
; CHECK: for.inc8.us.i:
; CHECK-NEXT: br i1 true, label [[MESHBB1_LOOPEXIT:%.*]], label [[MESHBB:%.*]]
; CHECK: for.body3.us.i:
; CHECK-NEXT: [[INDVARS_IV_I_SV_PHI:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_I:%.*]], [[MESHBB]] ], [ 0, [[FOR_BODY3_LR_PH_US_I:%.*]] ]
; CHECK-NEXT: [[TMP:%.*]] = phi i32 [ [[LSR_IV_NEXT:%.*]], [[MESHBB]] ], [ [[TMP3:%.*]], [[FOR_BODY3_LR_PH_US_I:%.*]] ]
; CHECK-NEXT: [[SCEVGEP:%.*]] = phi ptr [ [[SCEVGEP1:%.*]], [[MESHBB]] ], [ [[U:%.*]], [[FOR_BODY3_LR_PH_US_I]] ]
; CHECK-NEXT: [[OPQ_SA_CALC12:%.*]] = sub i32 undef, 227
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[LSR_IV:%.*]], [[INDVARS_IV_I_SV_PHI]]
; CHECK-NEXT: [[TMP:%.*]] = trunc i64 [[TMP0]] to i32
; CHECK-NEXT: [[MUL_I_US_I:%.*]] = mul nsw i32 0, [[TMP]]
; CHECK-NEXT: [[TMP1:%.*]] = shl nuw nsw i64 [[INDVARS_IV_I_SV_PHI]], 3
; CHECK-NEXT: [[SCEVGEP:%.*]] = getelementptr i8, ptr [[U:%.*]], i64 [[TMP1]]
; CHECK-NEXT: [[TMP2:%.*]] = load double, ptr [[SCEVGEP]], align 8
; CHECK-NEXT: br i1 undef, label [[FOR_INC8_US_I:%.*]], label [[MESHBB]]
; CHECK: for.body3.lr.ph.us.i.loopexit:
; CHECK-NEXT: [[LSR_IV_NEXT:%.*]] = add i64 [[LSR_IV]], 1
; CHECK-NEXT: br label [[FOR_BODY3_LR_PH_US_I]]
; CHECK: for.body3.lr.ph.us.i:
; CHECK-NEXT: [[LSR_IV]] = phi i64 [ [[LSR_IV_NEXT]], [[FOR_BODY3_LR_PH_US_I_LOOPEXIT:%.*]] ], [ undef, [[MESHBB1]] ]
; CHECK-NEXT: [[LSR_IV:%.*]] = phi i64 [ undef, [[MESHBB1]] ], [ [[INDVARS_IV8_I_SV_PHI24:%.*]], [[FOR_BODY3_LR_PH_US_I_LOOPEXIT:%.*]] ]
; CHECK-NEXT: [[ARRAYIDX_US_I:%.*]] = getelementptr inbounds double, ptr undef, i64 [[LSR_IV]]
; CHECK-NEXT: [[TMP1:%.*]] = add i64 [[LSR_IV]], 1
; CHECK-NEXT: [[TMP3]] = trunc i64 [[LSR_IV]] to i32
; CHECK-NEXT: br label [[FOR_BODY3_US_I:%.*]]
; CHECK: for.inc8.us.i2:
; CHECK-NEXT: unreachable
; CHECK: eval_At_times_u.exit:
; CHECK-NEXT: ret void
; CHECK: meshBB:
; CHECK-NEXT: [[INDVARS_IV8_I_SV_PHI24]] = phi i64 [ undef, [[FOR_BODY3_US_I]] ], [ [[TMP1]], [[FOR_INC8_US_I]] ]
; CHECK-NEXT: [[MESHSTACKVARIABLE_PHI:%.*]] = phi i32 [ [[OPQ_SA_CALC12]], [[FOR_BODY3_US_I]] ], [ undef, [[FOR_INC8_US_I]] ]
; CHECK-NEXT: [[INDVARS_IV_NEXT_I]] = add i64 [[INDVARS_IV_I_SV_PHI]], 1
; CHECK-NEXT: [[SCEVGEP1]] = getelementptr i8, ptr [[SCEVGEP]], i64 8
; CHECK-NEXT: [[LSR_IV_NEXT]] = add i32 [[TMP]], 1
; CHECK-NEXT: br i1 true, label [[FOR_BODY3_LR_PH_US_I_LOOPEXIT]], label [[FOR_BODY3_US_I]]
; CHECK: meshBB1.loopexit:
; CHECK-NEXT: br label [[MESHBB1]]
Expand Down
62 changes: 62 additions & 0 deletions llvm/test/Transforms/LoopUnroll/pr114879.ll
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
; RUN: opt -S -passes=loop-unroll-full -unroll-full-max-count=1 %s | FileCheck %s

@GlobIntONE = global i32 0, align 4

; Make sure we don't reuse the phi (undef, X) for X.

define ptr @test() {
; CHECK-LABEL: define ptr @test() {
; CHECK-NEXT: [[ENTRY:.*:]]
; CHECK-NEXT: br label %[[FOR_BODY_PEEL_BEGIN:.*]]
; CHECK: [[FOR_BODY_PEEL_BEGIN]]:
; CHECK-NEXT: br label %[[FOR_BODY_PEEL:.*]]
; CHECK: [[FOR_BODY_PEEL]]:
; CHECK-NEXT: br i1 true, label %[[CLEANUP_PEEL:.*]], label %[[CLEANUP_LOOPEXIT_PEEL:.*]]
; CHECK: [[CLEANUP_LOOPEXIT_PEEL]]:
; CHECK-NEXT: br label %[[CLEANUP_PEEL]]
; CHECK: [[CLEANUP_PEEL]]:
; CHECK-NEXT: [[RETVAL_2_PEEL:%.*]] = phi ptr [ undef, %[[FOR_BODY_PEEL]] ], [ @GlobIntONE, %[[CLEANUP_LOOPEXIT_PEEL]] ]
; CHECK-NEXT: br i1 true, label %[[FOR_BODY_PEEL_NEXT:.*]], label %[[CLEANUP2:.*]]
; CHECK: [[FOR_BODY_PEEL_NEXT]]:
; CHECK-NEXT: br label %[[FOR_BODY_PEEL_NEXT1:.*]]
; CHECK: [[FOR_BODY_PEEL_NEXT1]]:
; CHECK-NEXT: br label %[[ENTRY_PEEL_NEWPH:.*]]
; CHECK: [[ENTRY_PEEL_NEWPH]]:
; CHECK-NEXT: br label %[[FOR_BODY:.*]]
; CHECK: [[FOR_BODY]]:
; CHECK-NEXT: br i1 false, label %[[CLEANUP:.*]], label %[[CLEANUP_LOOPEXIT:.*]]
; CHECK: [[CLEANUP_LOOPEXIT]]:
; CHECK-NEXT: br label %[[CLEANUP]]
; CHECK: [[CLEANUP]]:
; CHECK-NEXT: br i1 false, label %[[FOR_BODY]], label %[[CLEANUP2_LOOPEXIT:.*]], !llvm.loop [[LOOP0:![0-9]+]]
; CHECK: [[CLEANUP2_LOOPEXIT]]:
; CHECK-NEXT: [[RETVAL_2_LCSSA_PH:%.*]] = phi ptr [ @GlobIntONE, %[[CLEANUP]] ]
; CHECK-NEXT: br label %[[CLEANUP2]]
; CHECK: [[CLEANUP2]]:
; CHECK-NEXT: [[RETVAL_2_LCSSA:%.*]] = phi ptr [ [[RETVAL_2_PEEL]], %[[CLEANUP_PEEL]] ], [ [[RETVAL_2_LCSSA_PH]], %[[CLEANUP2_LOOPEXIT]] ]
; CHECK-NEXT: ret ptr [[RETVAL_2_LCSSA]]
;
entry:
br label %for.body

for.body:
%retval.0 = phi ptr [ undef, %entry ], [ %retval.2, %cleanup ]
%cmp1.not = phi i1 [ true, %entry ], [ false, %cleanup ]
br i1 %cmp1.not, label %cleanup, label %cleanup.loopexit

cleanup.loopexit:
br label %cleanup

cleanup:
%retval.2 = phi ptr [ %retval.0, %for.body ], [ @GlobIntONE, %cleanup.loopexit ]
br i1 %cmp1.not, label %for.body, label %cleanup2

cleanup2:
%retval.2.lcssa = phi ptr [ %retval.2, %cleanup ]
ret ptr %retval.2.lcssa
}
;.
; CHECK: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]]}
; CHECK: [[META1]] = !{!"llvm.loop.peeled.count", i32 1}
;.
20 changes: 10 additions & 10 deletions llvm/test/Transforms/LoopVectorize/uniform-blend.ll
dtcxzyw marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ define void @blend_uniform_iv_trunc(i1 %c) {
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
; CHECK-NEXT: [[TMP0:%.*]] = trunc i64 [[INDEX]] to i16
; CHECK-NEXT: [[TMP1:%.*]] = add i16 [[TMP0]], 0
; CHECK-NEXT: [[PREDPHI:%.*]] = select i1 [[C]], i16 [[TMP1]], i16 undef
; CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds [32 x i16], ptr @dst, i16 0, i16 [[PREDPHI]]
; CHECK-NEXT: [[TMP3:%.*]] = getelementptr inbounds i16, ptr [[TMP2]], i32 0
; CHECK-NEXT: [[TMP6:%.*]] = select i1 [[C]], i16 [[TMP1]], i16 poison
; CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds [32 x i16], ptr @dst, i16 0, i16 [[TMP6]]
; CHECK-NEXT: [[TMP3:%.*]] = getelementptr inbounds i16, ptr [[TMP7]], i32 0
; CHECK-NEXT: store <4 x i16> zeroinitializer, ptr [[TMP3]], align 2
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 4
; CHECK-NEXT: [[TMP4:%.*]] = icmp eq i64 [[INDEX_NEXT]], 32
Expand All @@ -33,7 +33,7 @@ define void @blend_uniform_iv_trunc(i1 %c) {
; CHECK: [[LOOP_NEXT]]:
; CHECK-NEXT: br label %[[LOOP_LATCH]]
; CHECK: [[LOOP_LATCH]]:
; CHECK-NEXT: [[BLEND:%.*]] = phi i16 [ undef, %[[LOOP_HEADER]] ], [ [[IV_TRUNC_2]], %[[LOOP_NEXT]] ]
; CHECK-NEXT: [[BLEND:%.*]] = phi i16 [ poison, %[[LOOP_HEADER]] ], [ [[IV_TRUNC_2]], %[[LOOP_NEXT]] ]
; CHECK-NEXT: [[DST_PTR:%.*]] = getelementptr inbounds [32 x i16], ptr @dst, i16 0, i16 [[BLEND]]
; CHECK-NEXT: store i16 0, ptr [[DST_PTR]], align 2
; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
Expand All @@ -54,7 +54,7 @@ loop.next: ; preds = %loop.header
br label %loop.latch

loop.latch: ; preds = %loop.next, %loop.header
%blend = phi i16 [ undef, %loop.header ], [ %iv.trunc.2, %loop.next ]
%blend = phi i16 [ poison, %loop.header ], [ %iv.trunc.2, %loop.next ]
%dst.ptr = getelementptr inbounds [32 x i16], ptr @dst, i16 0, i16 %blend
store i16 0, ptr %dst.ptr
%iv.next = add nuw nsw i64 %iv, 1
Expand All @@ -75,9 +75,9 @@ define void @blend_uniform_iv(i1 %c) {
; CHECK: [[VECTOR_BODY]]:
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[INDEX]], 0
; CHECK-NEXT: [[PREDPHI:%.*]] = select i1 [[C]], i64 [[TMP0]], i64 undef
; CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds [32 x i16], ptr @dst, i16 0, i64 [[PREDPHI]]
; CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds i16, ptr [[TMP1]], i32 0
; CHECK-NEXT: [[TMP6:%.*]] = select i1 [[C]], i64 [[TMP0]], i64 poison
; CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds [32 x i16], ptr @dst, i16 0, i64 [[TMP6]]
; CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds i16, ptr [[TMP7]], i32 0
; CHECK-NEXT: store <4 x i16> zeroinitializer, ptr [[TMP2]], align 2
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 4
; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i64 [[INDEX_NEXT]], 32
Expand All @@ -93,7 +93,7 @@ define void @blend_uniform_iv(i1 %c) {
; CHECK: [[LOOP_NEXT]]:
; CHECK-NEXT: br label %[[LOOP_LATCH]]
; CHECK: [[LOOP_LATCH]]:
; CHECK-NEXT: [[BLEND:%.*]] = phi i64 [ undef, %[[LOOP_HEADER]] ], [ [[IV]], %[[LOOP_NEXT]] ]
; CHECK-NEXT: [[BLEND:%.*]] = phi i64 [ poison, %[[LOOP_HEADER]] ], [ [[IV]], %[[LOOP_NEXT]] ]
; CHECK-NEXT: [[DST_PTR:%.*]] = getelementptr inbounds [32 x i16], ptr @dst, i16 0, i64 [[BLEND]]
; CHECK-NEXT: store i16 0, ptr [[DST_PTR]], align 2
; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
Expand All @@ -114,7 +114,7 @@ loop.next: ; preds = %loop.header
br label %loop.latch

loop.latch: ; preds = %loop.next, %loop.header
%blend = phi i64 [ undef, %loop.header ], [ %iv, %loop.next ]
%blend = phi i64 [ poison, %loop.header ], [ %iv, %loop.next ]
%dst.ptr = getelementptr inbounds [32 x i16], ptr @dst, i16 0, i64 %blend
store i16 0, ptr %dst.ptr
%iv.next = add nuw nsw i64 %iv, 1
Expand Down
2 changes: 1 addition & 1 deletion llvm/unittests/Analysis/ScalarEvolutionTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ TEST_F(ScalarEvolutionsTest, SimplifiedPHI) {
auto *Ty = Type::getInt32Ty(Context);
auto *PN = PHINode::Create(Ty, 2, "", LoopBB->begin());
PN->addIncoming(Constant::getNullValue(Ty), EntryBB);
PN->addIncoming(UndefValue::get(Ty), LoopBB);
PN->addIncoming(PoisonValue::get(Ty), LoopBB);
ScalarEvolution SE = buildSE(*F);
const SCEV *S1 = SE.getSCEV(PN);
const SCEV *S2 = SE.getSCEV(PN);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ for.cond39.for.cond66.preheader.loopexit67_crit_edge: ; preds = %for.body42
br label %for.cond66.preheader

for.cond66.preheader: ; preds = %for.cond39.for.cond66.preheader.loopexit67_crit_edge, %if.end
%rawout1.3.ph = phi ptr [ %add.ptr62.lcssa, %for.cond39.for.cond66.preheader.loopexit67_crit_edge ], [ undef, %if.end ]
%rawout1.3.ph = phi ptr [ %add.ptr62.lcssa, %for.cond39.for.cond66.preheader.loopexit67_crit_edge ], [ poison, %if.end ]
%sb.3.ph = phi i32 [ 0, %for.cond39.for.cond66.preheader.loopexit67_crit_edge ], [ 0, %if.end ]
%tspnt.3.ph = phi ptr [ undef, %for.cond39.for.cond66.preheader.loopexit67_crit_edge ], [ %tsOut, %if.end ]
%tspnt.3.ph = phi ptr [ poison, %for.cond39.for.cond66.preheader.loopexit67_crit_edge ], [ %tsOut, %if.end ]
br label %for.cond69.preheader

for.body42: ; preds = %if.end
Expand All @@ -31,12 +31,12 @@ for.body42: ; preds = %if.end
for.cond69.preheader: ; preds = %for.end76, %for.cond66.preheader
%tspnt.375 = phi ptr [ %incdec.ptr79, %for.end76 ], [ %tspnt.3.ph, %for.cond66.preheader ]
%sb.374 = phi i32 [ %inc78, %for.end76 ], [ %sb.3.ph, %for.cond66.preheader ]
%rawout1.373 = phi ptr [ undef, %for.end76 ], [ %rawout1.3.ph, %for.cond66.preheader ]
%rawout1.373 = phi ptr [ poison, %for.end76 ], [ %rawout1.3.ph, %for.cond66.preheader ]
br label %for.body71

for.body71: ; preds = %for.body71, %for.cond69.preheader
%indvars.iv = phi i64 [ 0, %for.cond69.preheader ], [ %indvars.iv.next, %for.body71 ]
%rawout1.469 = phi ptr [ %rawout1.373, %for.cond69.preheader ], [ undef, %for.body71 ]
%rawout1.469 = phi ptr [ %rawout1.373, %for.cond69.preheader ], [ poison, %for.body71 ]
%0 = load i64, ptr %rawout1.469, align 8
%1 = shl nsw i64 %indvars.iv, 5
%arrayidx73 = getelementptr inbounds double, ptr %tspnt.375, i64 %1
Expand Down
2 changes: 1 addition & 1 deletion polly/test/CodeGen/inner_scev_sdiv_2.ll
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ for.cond.60.preheader: ; preds = %for.body.51, %for.c
ret void

for.body.51: ; preds = %for.body.51, %for.body.51.lr.ph
%indvars.iv86 = phi i64 [ %2, %for.body.51.lr.ph ], [ undef, %for.body.51 ]
%indvars.iv86 = phi i64 [ %2, %for.body.51.lr.ph ], [ poison, %for.body.51 ]
%arrayidx53 = getelementptr inbounds float, ptr %0, i64 %indvars.iv86
%3 = load float, ptr %arrayidx53, align 4
%mul56 = fmul float %3, undef
Expand Down
2 changes: 1 addition & 1 deletion polly/test/CodeGen/inner_scev_sdiv_3.ll
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ end:
ret i64 %div44.m

for.body.51: ; preds = %for.body.51, %for.body.51.lr.ph
%indvars.iv86 = phi i64 [ %2, %for.body.51.lr.ph ], [ undef, %for.body.51 ]
%indvars.iv86 = phi i64 [ %2, %for.body.51.lr.ph ], [ poison, %for.body.51 ]
%arrayidx53 = getelementptr inbounds float, ptr %0, i64 %indvars.iv86
%3 = load float, ptr %arrayidx53, align 4
%mul56 = fmul float %3, undef
Expand Down
2 changes: 1 addition & 1 deletion polly/test/CodeGen/non-affine-phi-node-expansion.ll
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ bb1: ; preds = %bb
br label %bb2

bb2: ; preds = %bb1, %bb
%tmp = phi i1 [ true, %bb ], [ undef, %bb1 ]
%tmp = phi i1 [ true, %bb ], [ poison, %bb1 ]
br label %bb3

bb3: ; preds = %bb13, %bb2
Expand Down
4 changes: 2 additions & 2 deletions polly/test/CodeGen/phi-defined-before-scop.ll
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ bb:
br label %bb1

bb1: ; preds = %bb6, %bb
%tmp2 = phi ptr [ %tmp7, %bb6 ], [ undef, %bb ]
%tmp2 = phi ptr [ %tmp7, %bb6 ], [ poison, %bb ]
%tmp = load ptr, ptr @global, align 8, !tbaa !1
br label %bb3

Expand All @@ -31,7 +31,7 @@ bb5: ; preds = %bb3
br label %bb6

bb6: ; preds = %bb5, %bb3
%tmp7 = phi ptr [ %tmp2, %bb3 ], [ undef, %bb5 ]
%tmp7 = phi ptr [ %tmp2, %bb3 ], [ poison, %bb5 ]
br i1 undef, label %bb8, label %bb1

bb8: ; preds = %bb6
Expand Down
4 changes: 2 additions & 2 deletions polly/test/CodeGen/scop_expander_insert_point.ll
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ for.body17.lr.ph: ; preds = %for.end22, %for.con
br label %for.body17

for.body17: ; preds = %for.body17, %for.body17.lr.ph
%outvalue.141 = phi i64 [ undef, %for.body17.lr.ph ], [ %add19, %for.body17 ]
%inptr.040 = phi ptr [ %add.ptr, %for.body17.lr.ph ], [ undef, %for.body17 ]
%outvalue.141 = phi i64 [ poison, %for.body17.lr.ph ], [ %add19, %for.body17 ]
%inptr.040 = phi ptr [ %add.ptr, %for.body17.lr.ph ], [ poison, %for.body17 ]
%1 = load i8, ptr %inptr.040
%add19 = mul nsw i64 0, %outvalue.141
br i1 false, label %for.body17, label %for.end22
Expand Down
2 changes: 1 addition & 1 deletion polly/test/CodeGen/stack-overflow-in-load-hoisting.ll
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ for.cond.12.preheader.lr.ph: ; preds = %entry
br label %for.body.14.lr.ph

for.body.14.lr.ph: ; preds = %for.end, %for.cond.12.preheader.lr.ph
%d.050 = phi ptr [ %tmp3, %for.cond.12.preheader.lr.ph ], [ undef, %for.end ]
%d.050 = phi ptr [ %tmp3, %for.cond.12.preheader.lr.ph ], [ poison, %for.end ]
%w = getelementptr inbounds %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573, ptr %s, i32 0, i32 2
%tmp4 = load i32, ptr %w, align 4
%cmp13.46 = icmp sgt i32 %tmp4, 0
Expand Down
2 changes: 1 addition & 1 deletion polly/test/ScopInfo/complex_domain_binary_condition.ll
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ for.body104.lr.ph: ; preds = %entry
br label %for.body104

for.body104: ; preds = %while.end146, %for.body104.lr.ph
%indvars.iv = phi i64 [ %6, %for.body104.lr.ph ], [ undef, %while.end146 ]
%indvars.iv = phi i64 [ %6, %for.body104.lr.ph ], [ poison, %while.end146 ]
%7 = sub nsw i64 %indvars.iv, %idx.ext62
%cmp107 = icmp slt i64 %7, -1
%.op = xor i64 %7, -1
Expand Down
2 changes: 1 addition & 1 deletion polly/test/ScopInfo/scev-div-with-evaluatable-divisor.ll
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ for.body.lr.ph: ; preds = %entry
br label %for.body

for.body: ; preds = %for.inc, %for.body.lr.ph
%mj.017 = phi i32 [ 1, %for.body.lr.ph ], [ undef, %for.inc ]
%mj.017 = phi i32 [ 1, %for.body.lr.ph ], [ poison, %for.inc ]
br i1 true, label %if.else, label %if.then

if.then: ; preds = %for.body
Expand Down
Loading