Skip to content

Commit 535fb71

Browse files
committed
!fixup restrict supported SCEV expressions more
1 parent 8fde627 commit 535fb71

File tree

5 files changed

+32
-39
lines changed

5 files changed

+32
-39
lines changed

llvm/include/llvm/Analysis/ScalarEvolutionPatternMatch.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,12 @@ m_scev_ZExt(const Op0_t &Op0) {
160160
return m_scev_Unary<SCEVZeroExtendExpr>(Op0);
161161
}
162162

163+
template <typename Op0_t>
164+
inline SCEVUnaryExpr_match<SCEVPtrToIntExpr, Op0_t>
165+
m_scev_PtrToInt(const Op0_t &Op0) {
166+
return SCEVUnaryExpr_match<SCEVPtrToIntExpr, Op0_t>(Op0);
167+
}
168+
163169
/// Match a binary SCEV.
164170
template <typename SCEVTy, typename Op0_t, typename Op1_t>
165171
struct SCEVBinaryExpr_match {

llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "llvm/ADT/SmallSet.h"
1919
#include "llvm/Analysis/InstructionSimplify.h"
2020
#include "llvm/Analysis/LoopInfo.h"
21+
#include "llvm/Analysis/ScalarEvolutionPatternMatch.h"
2122
#include "llvm/Analysis/TargetTransformInfo.h"
2223
#include "llvm/Analysis/ValueTracking.h"
2324
#include "llvm/IR/DataLayout.h"
@@ -42,6 +43,7 @@ cl::opt<unsigned> llvm::SCEVCheapExpansionBudget(
4243
"controls the budget that is considered cheap (default = 4)"));
4344

4445
using namespace PatternMatch;
46+
using namespace SCEVPatternMatch;
4547

4648
PoisonFlags::PoisonFlags(const Instruction *I) {
4749
NUW = false;
@@ -1242,18 +1244,18 @@ Value *SCEVExpander::tryToReuseLCSSAPhi(const SCEVAddRecExpr *S) {
12421244
continue;
12431245

12441246
// Check if we can re-use the existing PN, by adjusting it with an expanded
1245-
// offset, if the offset is simpler (for now just checks if it is
1246-
// AddRec-free).
1247+
// offset, if the offset is simpler.
12471248
const SCEV *Diff = SE.getMinusSCEV(S, ExitSCEV);
1248-
if (isa<SCEVCouldNotCompute>(Diff) ||
1249-
SCEVExprContains(Diff,
1250-
[](const SCEV *S) { return isa<SCEVAddRecExpr>(S); }))
1249+
const SCEV *Op = Diff;
1250+
match(Diff, m_scev_Mul(m_scev_AllOnes(), m_SCEV(Op)));
1251+
match(Op, m_scev_PtrToInt(m_SCEV(Op)));
1252+
if (!isa<SCEVConstant, SCEVUnknown>(Op))
12511253
continue;
12521254

12531255
Value *DiffV = expand(Diff);
12541256
Value *BaseV = &PN;
12551257
if (DiffV->getType()->isIntegerTy() && PhiTy->isPointerTy())
1256-
BaseV = Builder.CreatePtrToInt(BaseV, DiffV->getType());
1258+
return Builder.CreatePtrAdd(BaseV, DiffV);
12571259
return Builder.CreateAdd(BaseV, DiffV);
12581260
}
12591261

llvm/test/Transforms/LoopLoadElim/invalidate-laa-after-versioning.ll

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,7 @@ define void @test(ptr %arg, i64 %arg1) {
6666
; CHECK-NEXT: [[LCSSA_PTR_IV_2:%.*]] = phi ptr [ [[PTR_IV_2]], [[INNER_2]] ]
6767
; CHECK-NEXT: [[GEP_6:%.*]] = getelementptr inbounds double, ptr [[PTR_PHI]], i64 1
6868
; CHECK-NEXT: [[GEP_7:%.*]] = getelementptr inbounds double, ptr [[LCSSA_PTR_IV_2]], i64 1
69-
; CHECK-NEXT: [[TMP0:%.*]] = ptrtoint ptr [[LCSSA_PTR_IV_2]] to i64
70-
; CHECK-NEXT: [[TMP1:%.*]] = add i64 [[TMP0]], 16
71-
; CHECK-NEXT: [[SCEVGEP3:%.*]] = inttoptr i64 [[TMP1]] to ptr
69+
; CHECK-NEXT: [[SCEVGEP3:%.*]] = getelementptr i8, ptr [[LCSSA_PTR_IV_2]], i64 16
7270
; CHECK-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[GEP_7]], [[GEP_1]]
7371
; CHECK-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[PTR_PHI]], [[SCEVGEP3]]
7472
; CHECK-NEXT: [[FOUND_CONFLICT:%.*]] = and i1 [[BOUND0]], [[BOUND1]]

llvm/test/Transforms/LoopVectorize/reuse-lcssa-phi-scev-expansion.ll

Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -114,22 +114,23 @@ define void @runtime_checks_ptr_inductions(ptr %dst.1, ptr %dst.2, i1 %c) {
114114
; CHECK-NEXT: br i1 [[EC_1]], label %[[LOOP_2_HEADER_PREHEADER:.*]], label %[[LOOP_1]]
115115
; CHECK: [[LOOP_2_HEADER_PREHEADER]]:
116116
; CHECK-NEXT: [[SEL_DST_LCSSA1:%.*]] = phi ptr [ [[SEL_DST]], %[[LOOP_1]] ]
117-
; CHECK-NEXT: [[PTR_IV_1_LCSSA:%.*]] = phi ptr [ [[PTR_IV_1]], %[[LOOP_1]] ]
117+
; CHECK-NEXT: [[PTR_IV_1_LCSSA1:%.*]] = phi ptr [ [[PTR_IV_1]], %[[LOOP_1]] ]
118118
; CHECK-NEXT: [[SEL_DST_LCSSA:%.*]] = phi ptr [ [[SEL_DST]], %[[LOOP_1]] ]
119119
; CHECK-NEXT: [[SEL_DST_LCSSA12:%.*]] = ptrtoint ptr [[SEL_DST_LCSSA1]] to i64
120120
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_MEMCHECK:.*]]
121121
; CHECK: [[VECTOR_MEMCHECK]]:
122+
; CHECK-NEXT: [[TMP2:%.*]] = mul i64 [[SEL_DST_LCSSA12]], -1
123+
; CHECK-NEXT: [[PTR_IV_1_LCSSA:%.*]] = getelementptr i8, ptr [[PTR_IV_1_LCSSA1]], i64 [[TMP2]]
122124
; CHECK-NEXT: [[TMP0:%.*]] = ptrtoint ptr [[PTR_IV_1_LCSSA]] to i64
123-
; CHECK-NEXT: [[TMP1:%.*]] = sub i64 [[TMP0]], [[SEL_DST_LCSSA12]]
124-
; CHECK-NEXT: [[DIFF_CHECK:%.*]] = icmp ult i64 [[TMP1]], 2
125+
; CHECK-NEXT: [[DIFF_CHECK:%.*]] = icmp ult i64 [[TMP0]], 2
125126
; CHECK-NEXT: br i1 [[DIFF_CHECK]], label %[[SCALAR_PH]], label %[[VECTOR_PH:.*]]
126127
; CHECK: [[VECTOR_PH]]:
127-
; CHECK-NEXT: [[TMP2:%.*]] = getelementptr i8, ptr [[PTR_IV_1_LCSSA]], i64 1022
128+
; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[PTR_IV_1_LCSSA1]], i64 1022
128129
; CHECK-NEXT: [[TMP3:%.*]] = getelementptr i8, ptr [[SEL_DST_LCSSA]], i64 1022
129130
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
130131
; CHECK: [[VECTOR_BODY]]:
131132
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
132-
; CHECK-NEXT: [[NEXT_GEP:%.*]] = getelementptr i8, ptr [[PTR_IV_1_LCSSA]], i64 [[INDEX]]
133+
; CHECK-NEXT: [[NEXT_GEP:%.*]] = getelementptr i8, ptr [[PTR_IV_1_LCSSA1]], i64 [[INDEX]]
133134
; CHECK-NEXT: [[NEXT_GEP4:%.*]] = getelementptr i8, ptr [[SEL_DST_LCSSA]], i64 [[INDEX]]
134135
; CHECK-NEXT: [[TMP4:%.*]] = getelementptr i8, ptr [[NEXT_GEP4]], i32 0
135136
; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <2 x i8>, ptr [[TMP4]], align 1
@@ -142,13 +143,13 @@ define void @runtime_checks_ptr_inductions(ptr %dst.1, ptr %dst.2, i1 %c) {
142143
; CHECK-NEXT: br label %[[SCALAR_PH]]
143144
; CHECK: [[SCALAR_PH]]:
144145
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i32 [ 1023, %[[MIDDLE_BLOCK]] ], [ 1, %[[LOOP_2_HEADER_PREHEADER]] ], [ 1, %[[VECTOR_MEMCHECK]] ]
145-
; CHECK-NEXT: [[BC_RESUME_VAL4:%.*]] = phi ptr [ [[TMP2]], %[[MIDDLE_BLOCK]] ], [ [[PTR_IV_1_LCSSA]], %[[LOOP_2_HEADER_PREHEADER]] ], [ [[PTR_IV_1_LCSSA]], %[[VECTOR_MEMCHECK]] ]
146-
; CHECK-NEXT: [[BC_RESUME_VAL5:%.*]] = phi ptr [ [[TMP3]], %[[MIDDLE_BLOCK]] ], [ [[SEL_DST_LCSSA]], %[[LOOP_2_HEADER_PREHEADER]] ], [ [[SEL_DST_LCSSA]], %[[VECTOR_MEMCHECK]] ]
146+
; CHECK-NEXT: [[BC_RESUME_VAL5:%.*]] = phi ptr [ [[TMP1]], %[[MIDDLE_BLOCK]] ], [ [[PTR_IV_1_LCSSA1]], %[[LOOP_2_HEADER_PREHEADER]] ], [ [[PTR_IV_1_LCSSA1]], %[[VECTOR_MEMCHECK]] ]
147+
; CHECK-NEXT: [[BC_RESUME_VAL6:%.*]] = phi ptr [ [[TMP3]], %[[MIDDLE_BLOCK]] ], [ [[SEL_DST_LCSSA]], %[[LOOP_2_HEADER_PREHEADER]] ], [ [[SEL_DST_LCSSA]], %[[VECTOR_MEMCHECK]] ]
147148
; CHECK-NEXT: br label %[[LOOP_2_HEADER:.*]]
148149
; CHECK: [[LOOP_2_HEADER]]:
149150
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ [[DEC7:%.*]], %[[LOOP_2_LATCH:.*]] ], [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ]
150-
; CHECK-NEXT: [[PTR_IV_2:%.*]] = phi ptr [ [[PTR_IV_2_NEXT:%.*]], %[[LOOP_2_LATCH]] ], [ [[BC_RESUME_VAL4]], %[[SCALAR_PH]] ]
151-
; CHECK-NEXT: [[PTR_IV_3:%.*]] = phi ptr [ [[PTR_IV_3_NEXT:%.*]], %[[LOOP_2_LATCH]] ], [ [[BC_RESUME_VAL5]], %[[SCALAR_PH]] ]
151+
; CHECK-NEXT: [[PTR_IV_2:%.*]] = phi ptr [ [[PTR_IV_2_NEXT:%.*]], %[[LOOP_2_LATCH]] ], [ [[BC_RESUME_VAL5]], %[[SCALAR_PH]] ]
152+
; CHECK-NEXT: [[PTR_IV_3:%.*]] = phi ptr [ [[PTR_IV_3_NEXT:%.*]], %[[LOOP_2_LATCH]] ], [ [[BC_RESUME_VAL6]], %[[SCALAR_PH]] ]
152153
; CHECK-NEXT: [[EC_2:%.*]] = icmp eq i32 [[IV]], 1024
153154
; CHECK-NEXT: br i1 [[EC_2]], label %[[EXIT:.*]], label %[[LOOP_2_LATCH]]
154155
; CHECK: [[LOOP_2_LATCH]]:
@@ -209,10 +210,8 @@ define void @expand_diff_scev_unknown(ptr %dst, i1 %invar.c, i32 %step) mustprog
209210
; CHECK-NEXT: br i1 [[INVAR_C]], label %[[LOOP_2_PREHEADER:.*]], label %[[LOOP_1]]
210211
; CHECK: [[LOOP_2_PREHEADER]]:
211212
; CHECK-NEXT: [[INDVAR_LCSSA1:%.*]] = phi i32 [ [[INDVAR]], %[[LOOP_1]] ]
212-
; CHECK-NEXT: [[INDVAR_LCSSA:%.*]] = phi i32 [ [[INDVAR]], %[[LOOP_1]] ]
213213
; CHECK-NEXT: [[IV_1_LCSSA:%.*]] = phi i32 [ [[IV_1]], %[[LOOP_1]] ]
214-
; CHECK-NEXT: [[TMP0:%.*]] = shl i32 [[STEP]], 1
215-
; CHECK-NEXT: [[TMP1:%.*]] = add i32 [[INDVAR_LCSSA]], [[TMP0]]
214+
; CHECK-NEXT: [[TMP1:%.*]] = add i32 [[IV_1_LCSSA]], [[STEP]]
216215
; CHECK-NEXT: [[SMAX:%.*]] = call i32 @llvm.smax.i32(i32 [[TMP1]], i32 0)
217216
; CHECK-NEXT: [[TMP2:%.*]] = mul i32 [[STEP]], -2
218217
; CHECK-NEXT: [[TMP3:%.*]] = mul i32 [[INDVAR_LCSSA1]], -1
@@ -285,43 +284,33 @@ define void @expand_diff_neg_ptrtoint_expr(ptr %src, ptr %start) {
285284
; CHECK-SAME: ptr [[SRC:%.*]], ptr [[START:%.*]]) {
286285
; CHECK-NEXT: [[ENTRY:.*]]:
287286
; CHECK-NEXT: [[SRC2:%.*]] = ptrtoint ptr [[SRC]] to i64
288-
; CHECK-NEXT: [[START1:%.*]] = ptrtoint ptr [[START]] to i64
289287
; CHECK-NEXT: br label %[[LOOP_1:.*]]
290288
; CHECK: [[LOOP_1]]:
291-
; CHECK-NEXT: [[INDVAR:%.*]] = phi i64 [ [[INDVAR_NEXT:%.*]], %[[LOOP_1]] ], [ 0, %[[ENTRY]] ]
292289
; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 1, %[[ENTRY]] ], [ [[IV_NEXT:%.*]], %[[LOOP_1]] ]
293290
; CHECK-NEXT: [[PTR_IV_1:%.*]] = phi ptr [ [[START]], %[[ENTRY]] ], [ [[PTR_IV_1_NEXT:%.*]], %[[LOOP_1]] ]
294291
; CHECK-NEXT: [[PTR_IV_1_NEXT]] = getelementptr i8, ptr [[PTR_IV_1]], i64 8
295292
; CHECK-NEXT: call void @foo()
296293
; CHECK-NEXT: [[IV_NEXT]] = add i64 [[IV]], 1
297294
; CHECK-NEXT: [[EC_1:%.*]] = icmp eq i64 [[IV_NEXT]], 32
298-
; CHECK-NEXT: [[INDVAR_NEXT]] = add i64 [[INDVAR]], 1
299295
; CHECK-NEXT: br i1 [[EC_1]], label %[[LOOP_2_PREHEADER:.*]], label %[[LOOP_1]]
300296
; CHECK: [[LOOP_2_PREHEADER]]:
301-
; CHECK-NEXT: [[INDVAR_LCSSA:%.*]] = phi i64 [ [[INDVAR]], %[[LOOP_1]] ]
302297
; CHECK-NEXT: [[PTR_IV_1_NEXT_LCSSA:%.*]] = phi ptr [ [[PTR_IV_1_NEXT]], %[[LOOP_1]] ]
303298
; CHECK-NEXT: br label %[[LOOP_2:.*]]
304299
; CHECK: [[LOOP_2]]:
305-
; CHECK-NEXT: [[INDVAR3:%.*]] = phi i64 [ 0, %[[LOOP_2_PREHEADER]] ], [ [[INDVAR_NEXT4:%.*]], %[[LOOP_2]] ]
306300
; CHECK-NEXT: [[IV_1:%.*]] = phi i64 [ [[IV_NEXT_1:%.*]], %[[LOOP_2]] ], [ 1, %[[LOOP_2_PREHEADER]] ]
307301
; CHECK-NEXT: [[PTR_IV_2:%.*]] = phi ptr [ [[PTR_IV_2_NEXT:%.*]], %[[LOOP_2]] ], [ [[PTR_IV_1_NEXT_LCSSA]], %[[LOOP_2_PREHEADER]] ]
308302
; CHECK-NEXT: call void @bar()
309303
; CHECK-NEXT: [[PTR_IV_2_NEXT]] = getelementptr i8, ptr [[PTR_IV_2]], i64 8
310304
; CHECK-NEXT: [[IV_NEXT_1]] = add i64 [[IV_1]], 1
311305
; CHECK-NEXT: [[EC_2:%.*]] = icmp eq i64 [[IV_NEXT_1]], 32
312-
; CHECK-NEXT: [[INDVAR_NEXT4]] = add i64 [[INDVAR3]], 1
313306
; CHECK-NEXT: br i1 [[EC_2]], label %[[LOOP_3_PREHEADER:.*]], label %[[LOOP_2]]
314307
; CHECK: [[LOOP_3_PREHEADER]]:
315-
; CHECK-NEXT: [[INDVAR3_LCSSA:%.*]] = phi i64 [ [[INDVAR3]], %[[LOOP_2]] ]
316308
; CHECK-NEXT: [[PTR_IV_2_NEXT_LCSSA:%.*]] = phi ptr [ [[PTR_IV_2_NEXT]], %[[LOOP_2]] ]
317309
; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_MEMCHECK:.*]]
318310
; CHECK: [[VECTOR_MEMCHECK]]:
319-
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[START1]], 16
320-
; CHECK-NEXT: [[TMP1:%.*]] = sub i64 [[TMP0]], [[SRC2]]
321-
; CHECK-NEXT: [[TMP2:%.*]] = shl nuw nsw i64 [[INDVAR_LCSSA]], 3
322-
; CHECK-NEXT: [[TMP3:%.*]] = add i64 [[TMP2]], [[TMP1]]
323-
; CHECK-NEXT: [[TMP4:%.*]] = shl nuw nsw i64 [[INDVAR3_LCSSA]], 3
324-
; CHECK-NEXT: [[TMP5:%.*]] = add i64 [[TMP4]], [[TMP3]]
311+
; CHECK-NEXT: [[TMP0:%.*]] = sub i64 0, [[SRC2]]
312+
; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[PTR_IV_2_NEXT_LCSSA]], i64 [[TMP0]]
313+
; CHECK-NEXT: [[TMP5:%.*]] = ptrtoint ptr [[TMP1]] to i64
325314
; CHECK-NEXT: [[DIFF_CHECK:%.*]] = icmp ult i64 [[TMP5]], 16
326315
; CHECK-NEXT: br i1 [[DIFF_CHECK]], label %[[SCALAR_PH]], label %[[VECTOR_PH:.*]]
327316
; CHECK: [[VECTOR_PH]]:
@@ -345,11 +334,11 @@ define void @expand_diff_neg_ptrtoint_expr(ptr %src, ptr %start) {
345334
; CHECK-NEXT: br i1 false, label %[[EXIT:.*]], label %[[SCALAR_PH]]
346335
; CHECK: [[SCALAR_PH]]:
347336
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ -1, %[[MIDDLE_BLOCK]] ], [ 1, %[[LOOP_3_PREHEADER]] ], [ 1, %[[VECTOR_MEMCHECK]] ]
348-
; CHECK-NEXT: [[BC_RESUME_VAL6:%.*]] = phi ptr [ [[TMP6]], %[[MIDDLE_BLOCK]] ], [ [[PTR_IV_2_NEXT_LCSSA]], %[[LOOP_3_PREHEADER]] ], [ [[PTR_IV_2_NEXT_LCSSA]], %[[VECTOR_MEMCHECK]] ]
337+
; CHECK-NEXT: [[BC_RESUME_VAL3:%.*]] = phi ptr [ [[TMP6]], %[[MIDDLE_BLOCK]] ], [ [[PTR_IV_2_NEXT_LCSSA]], %[[LOOP_3_PREHEADER]] ], [ [[PTR_IV_2_NEXT_LCSSA]], %[[VECTOR_MEMCHECK]] ]
349338
; CHECK-NEXT: br label %[[LOOP_3:.*]]
350339
; CHECK: [[LOOP_3]]:
351340
; CHECK-NEXT: [[IV_2:%.*]] = phi i64 [ [[IV_NEXT_2:%.*]], %[[LOOP_3]] ], [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ]
352-
; CHECK-NEXT: [[PTR_IV_3:%.*]] = phi ptr [ [[PTR_IV_3_NEXT:%.*]], %[[LOOP_3]] ], [ [[BC_RESUME_VAL6]], %[[SCALAR_PH]] ]
341+
; CHECK-NEXT: [[PTR_IV_3:%.*]] = phi ptr [ [[PTR_IV_3_NEXT:%.*]], %[[LOOP_3]] ], [ [[BC_RESUME_VAL3]], %[[SCALAR_PH]] ]
353342
; CHECK-NEXT: [[TMP12:%.*]] = add i64 [[IV_2]], -1
354343
; CHECK-NEXT: [[GEP_SRC:%.*]] = getelementptr double, ptr [[SRC]], i64 [[TMP12]]
355344
; CHECK-NEXT: [[L:%.*]] = load i64, ptr [[GEP_SRC]], align 8

llvm/test/Transforms/LoopVersioning/invalidate-laa-after-versioning.ll

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,7 @@ define void @test(ptr %arg, i64 %arg1) {
6363
; CHECK-NEXT: [[LCSSA_PTR_IV_2:%.*]] = phi ptr [ [[PTR_IV_2]], [[INNER_2]] ]
6464
; CHECK-NEXT: [[GEP_6:%.*]] = getelementptr inbounds double, ptr [[PTR_PHI]], i64 1
6565
; CHECK-NEXT: [[GEP_7:%.*]] = getelementptr inbounds double, ptr [[LCSSA_PTR_IV_2]], i64 1
66-
; CHECK-NEXT: [[TMP0:%.*]] = ptrtoint ptr [[LCSSA_PTR_IV_2]] to i64
67-
; CHECK-NEXT: [[TMP1:%.*]] = add i64 [[TMP0]], 16
68-
; CHECK-NEXT: [[SCEVGEP:%.*]] = inttoptr i64 [[TMP1]] to ptr
66+
; CHECK-NEXT: [[SCEVGEP:%.*]] = getelementptr i8, ptr [[LCSSA_PTR_IV_2]], i64 16
6967
; CHECK-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[GEP_7]], [[GEP_1]]
7068
; CHECK-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[PTR_PHI]], [[SCEVGEP]]
7169
; CHECK-NEXT: [[FOUND_CONFLICT:%.*]] = and i1 [[BOUND0]], [[BOUND1]]

0 commit comments

Comments
 (0)