Skip to content

Commit beba307

Browse files
committed
[LSR] Clear SCEVExpander before deleting phi nodes
Fixes llvm#84709.
1 parent 4d0f79e commit beba307

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6971,6 +6971,7 @@ static bool ReduceLoopStrength(Loop *L, IVUsers &IU, ScalarEvolution &SE,
69716971
Rewriter.setDebugType(DEBUG_TYPE);
69726972
#endif
69736973
unsigned numFolded = Rewriter.replaceCongruentIVs(L, &DT, DeadInsts, &TTI);
6974+
Rewriter.clear();
69746975
if (numFolded) {
69756976
Changed = true;
69766977
RecursivelyDeleteTriviallyDeadInstructionsPermissive(DeadInsts, &TLI,
@@ -6989,6 +6990,7 @@ static bool ReduceLoopStrength(Loop *L, IVUsers &IU, ScalarEvolution &SE,
69896990
SCEVExpander Rewriter(SE, DL, "lsr", true);
69906991
int Rewrites = rewriteLoopExitValues(L, &LI, &TLI, &SE, &TTI, Rewriter, &DT,
69916992
UnusedIndVarInLoop, DeadInsts);
6993+
Rewriter.clear();
69926994
if (Rewrites) {
69936995
Changed = true;
69946996
RecursivelyDeleteTriviallyDeadInstructionsPermissive(DeadInsts, &TLI,
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4
2+
; RUN: opt -S -passes=loop-reduce < %s | FileCheck %s
3+
4+
; Make sure it does not assert.
5+
define i64 @test() {
6+
; CHECK-LABEL: define i64 @test() {
7+
; CHECK-NEXT: bb:
8+
; CHECK-NEXT: br label [[BB1:%.*]]
9+
; CHECK: bb1:
10+
; CHECK-NEXT: br label [[BB2:%.*]]
11+
; CHECK: bb2:
12+
; CHECK-NEXT: br i1 true, label [[BB5:%.*]], label [[BB2]]
13+
; CHECK: bb5:
14+
; CHECK-NEXT: br label [[BB1]]
15+
;
16+
bb:
17+
br label %bb1
18+
19+
bb1:
20+
%phi = phi i8 [ %zext6, %bb5 ], [ 0, %bb ]
21+
br label %bb2
22+
23+
bb2:
24+
%phi3 = phi i8 [ %add, %bb2 ], [ %phi, %bb1 ]
25+
%phi4 = phi i32 [ 0, %bb2 ], [ 1, %bb1 ]
26+
%add = add i8 %phi3, 1
27+
br i1 true, label %bb5, label %bb2
28+
29+
bb5:
30+
%zext = zext i8 %add to i32
31+
%icmp = icmp sge i32 %phi4, 0
32+
%zext6 = zext i1 %icmp to i8
33+
br label %bb1
34+
}

0 commit comments

Comments
 (0)