[PATCH] D145350: [PowerPC] Check if the latch block is in the value list for the PHI before get the incoming value.
Esme Yi via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 6 22:07:08 PST 2023
Esme updated this revision to Diff 502924.
Esme added a comment.
Address comment.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D145350/new/
https://reviews.llvm.org/D145350
Files:
llvm/lib/Target/PowerPC/PPCLoopInstrFormPrep.cpp
llvm/test/CodeGen/PowerPC/loop-instr-form-non-inc.ll
Index: llvm/test/CodeGen/PowerPC/loop-instr-form-non-inc.ll
===================================================================
--- /dev/null
+++ llvm/test/CodeGen/PowerPC/loop-instr-form-non-inc.ll
@@ -0,0 +1,39 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-linux-gnu \
+; RUN: -mcpu=pwr9 < %s | FileCheck %s
+
+define dso_local void @test_no_inc(i32 signext %a) local_unnamed_addr nounwind align 2 {
+; CHECK-LABEL: test_no_inc:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: srawi 4, 3, 31
+; CHECK-NEXT: cmpwi 3, 0
+; CHECK-NEXT: li 6, 1
+; CHECK-NEXT: li 7, 0
+; CHECK-NEXT: andc 4, 3, 4
+; CHECK-NEXT: addi 5, 4, 1
+; CHECK-NEXT: .p2align 5
+; CHECK-NEXT: .LBB0_1: # %for.cond
+; CHECK-NEXT: #
+; CHECK-NEXT: add 8, 3, 6
+; CHECK-NEXT: stb 7, 0(5)
+; CHECK-NEXT: add 5, 5, 4
+; CHECK-NEXT: iselgt 6, 8, 6
+; CHECK-NEXT: b .LBB0_1
+entry:
+ %cmp10 = icmp sgt i32 %a, 0
+ br label %for.cond
+
+for.cond: ; preds = %for.cond.cleanup, %entry
+ %g.0 = phi i32 [ 1, %entry ], [ %g.1.lcssa, %for.cond.cleanup ]
+ br i1 %cmp10, label %for.body.preheader, label %for.cond.cleanup
+
+for.body.preheader: ; preds = %for.cond
+ %0 = add i32 %a, %g.0
+ br label %for.cond.cleanup
+
+for.cond.cleanup: ; preds = %for.body.preheader, %for.cond
+ %g.1.lcssa = phi i32 [ %g.0, %for.cond ], [ %0, %for.body.preheader ]
+ %arrayidx5 = getelementptr inbounds i8, ptr null, i32 %g.1.lcssa
+ store i8 0, ptr %arrayidx5, align 1
+ br label %for.cond
+}
Index: llvm/lib/Target/PowerPC/PPCLoopInstrFormPrep.cpp
===================================================================
--- llvm/lib/Target/PowerPC/PPCLoopInstrFormPrep.cpp
+++ llvm/lib/Target/PowerPC/PPCLoopInstrFormPrep.cpp
@@ -1179,6 +1179,8 @@
// Get the incoming value from the loop latch and check if the value has
// the add form with the required increment.
+ if (CurrentPHINode->getBasicBlockIndex(LatchBB) < 0)
+ continue;
if (Instruction *I = dyn_cast<Instruction>(
CurrentPHINode->getIncomingValueForBlock(LatchBB))) {
Value *StrippedBaseI = I;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D145350.502924.patch
Type: text/x-patch
Size: 2293 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230307/1bf4be6e/attachment.bin>
More information about the llvm-commits
mailing list