Skip to content

Commit 6628dc2

Browse files
committed
!fixup update after rebase, extend offset as well.
1 parent 2753154 commit 6628dc2

File tree

3 files changed

+93
-16
lines changed

3 files changed

+93
-16
lines changed

llvm/lib/Analysis/LoopAccessAnalysis.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,16 +212,18 @@ static bool evaluateAddRecAtMaxBTCWillNotWrap(const SCEVAddRecExpr *AR,
212212
if (SE.isKnownPositive(Step)) {
213213
// For positive steps, check if (AR->getStart() - StartPtr) + MaxBTC <=
214214
// DerefBytes / Step
215+
const SCEV *StartOffset = SE.getNoopOrSignExtend(
216+
SE.getMinusSCEV(AR->getStart(), StartPtr), WiderTy);
215217
return SE.isKnownPredicate(
216-
CmpInst::ICMP_ULE,
217-
SE.getAddExpr(SE.getMinusSCEV(AR->getStart(), StartPtr), MaxBTC),
218+
CmpInst::ICMP_ULE, SE.getAddExpr(StartOffset, MaxBTC),
218219
SE.getUDivExpr(SE.getConstant(WiderTy, DerefBytes), Step));
219220
}
220221
if (SE.isKnownNegative(Step)) {
221222
// For negative steps, check using StartOffset == AR->getStart() - StartPtr:
222223
// * StartOffset >= MaxBTC * Step
223224
// * AND StartOffset <= DerefBytes / Step
224-
auto *StartOffset = SE.getMinusSCEV(AR->getStart(), StartPtr);
225+
auto *StartOffset = SE.getNoopOrSignExtend(
226+
SE.getMinusSCEV(AR->getStart(), StartPtr), WiderTy);
225227
return SE.isKnownPredicate(
226228
CmpInst::ICMP_UGE, StartOffset,
227229
SE.getMulExpr(MaxBTC, SE.getNegativeSCEV(Step))) &&

llvm/test/Transforms/LoopVectorize/dereferenceable-info-from-assumption-variable-size.ll

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ define void @deref_assumption_in_preheader_non_constant_trip_count_access_i8(ptr
1616
; CHECK-NEXT: [[N_VEC:%.*]] = sub i64 [[N]], [[N_MOD_VF]]
1717
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
1818
; CHECK: [[VECTOR_BODY]]:
19-
; CHECK-NEXT: [[TMP0:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
20-
; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[A]], i64 [[TMP0]]
19+
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[PRED_LOAD_CONTINUE2:.*]] ]
20+
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[INDEX]], 0
2121
; CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds i8, ptr [[B]], i64 [[TMP0]]
2222
; CHECK-NEXT: [[TMP3:%.*]] = getelementptr inbounds i8, ptr [[TMP2]], i32 0
2323
; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <2 x i8>, ptr [[TMP3]], align 1
@@ -46,7 +46,7 @@ define void @deref_assumption_in_preheader_non_constant_trip_count_access_i8(ptr
4646
; CHECK-NEXT: [[TMP6:%.*]] = getelementptr inbounds i8, ptr [[C]], i64 [[TMP0]]
4747
; CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds i8, ptr [[TMP6]], i32 0
4848
; CHECK-NEXT: store <2 x i8> [[PREDPHI]], ptr [[TMP7]], align 1
49-
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[TMP0]], 2
49+
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
5050
; CHECK-NEXT: [[TMP8:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
5151
; CHECK-NEXT: br i1 [[TMP8]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
5252
; CHECK: [[MIDDLE_BLOCK]]:
@@ -117,8 +117,8 @@ define void @deref_assumption_in_preheader_non_constant_trip_count_access_i32(pt
117117
; CHECK-NEXT: [[N_VEC:%.*]] = sub i64 [[N]], [[N_MOD_VF]]
118118
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
119119
; CHECK: [[VECTOR_BODY]]:
120-
; CHECK-NEXT: [[TMP0:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
121-
; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i32, ptr [[A]], i64 [[TMP0]]
120+
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[PRED_LOAD_CONTINUE2:.*]] ]
121+
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[INDEX]], 0
122122
; CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds i32, ptr [[B]], i64 [[TMP0]]
123123
; CHECK-NEXT: [[TMP3:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 0
124124
; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <2 x i32>, ptr [[TMP3]], align 1
@@ -147,7 +147,7 @@ define void @deref_assumption_in_preheader_non_constant_trip_count_access_i32(pt
147147
; CHECK-NEXT: [[TMP6:%.*]] = getelementptr inbounds i32, ptr [[C]], i64 [[TMP0]]
148148
; CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds i32, ptr [[TMP6]], i32 0
149149
; CHECK-NEXT: store <2 x i32> [[PREDPHI]], ptr [[TMP7]], align 1
150-
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[TMP0]], 2
150+
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
151151
; CHECK-NEXT: [[TMP8:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
152152
; CHECK-NEXT: br i1 [[TMP8]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP4:![0-9]+]]
153153
; CHECK: [[MIDDLE_BLOCK]]:
@@ -219,8 +219,8 @@ define void @deref_assumption_in_preheader_too_small_non_constant_trip_count_acc
219219
; CHECK-NEXT: [[N_VEC:%.*]] = sub i64 [[N]], [[N_MOD_VF]]
220220
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
221221
; CHECK: [[VECTOR_BODY]]:
222-
; CHECK-NEXT: [[TMP0:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
223-
; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i32, ptr [[A]], i64 [[TMP0]]
222+
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[PRED_LOAD_CONTINUE2:.*]] ]
223+
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[INDEX]], 0
224224
; CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds i32, ptr [[B]], i64 [[TMP0]]
225225
; CHECK-NEXT: [[TMP3:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 0
226226
; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <2 x i32>, ptr [[TMP3]], align 1
@@ -249,7 +249,7 @@ define void @deref_assumption_in_preheader_too_small_non_constant_trip_count_acc
249249
; CHECK-NEXT: [[TMP6:%.*]] = getelementptr inbounds i32, ptr [[C]], i64 [[TMP0]]
250250
; CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds i32, ptr [[TMP6]], i32 0
251251
; CHECK-NEXT: store <2 x i32> [[PREDPHI]], ptr [[TMP7]], align 1
252-
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[TMP0]], 2
252+
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
253253
; CHECK-NEXT: [[TMP8:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
254254
; CHECK-NEXT: br i1 [[TMP8]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP6:![0-9]+]]
255255
; CHECK: [[MIDDLE_BLOCK]]:
@@ -319,8 +319,8 @@ define void @deref_assumption_in_preheader_too_small2_non_constant_trip_count_ac
319319
; CHECK-NEXT: [[N_VEC:%.*]] = sub i64 [[N]], [[N_MOD_VF]]
320320
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
321321
; CHECK: [[VECTOR_BODY]]:
322-
; CHECK-NEXT: [[TMP0:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
323-
; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i32, ptr [[A]], i64 [[TMP0]]
322+
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[PRED_LOAD_CONTINUE2:.*]] ]
323+
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[INDEX]], 0
324324
; CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds i32, ptr [[B]], i64 [[TMP0]]
325325
; CHECK-NEXT: [[TMP3:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 0
326326
; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <2 x i32>, ptr [[TMP3]], align 1
@@ -349,7 +349,7 @@ define void @deref_assumption_in_preheader_too_small2_non_constant_trip_count_ac
349349
; CHECK-NEXT: [[TMP6:%.*]] = getelementptr inbounds i32, ptr [[C]], i64 [[TMP0]]
350350
; CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds i32, ptr [[TMP6]], i32 0
351351
; CHECK-NEXT: store <2 x i32> [[PREDPHI]], ptr [[TMP7]], align 1
352-
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[TMP0]], 2
352+
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
353353
; CHECK-NEXT: [[TMP8:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
354354
; CHECK-NEXT: br i1 [[TMP8]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP8:![0-9]+]]
355355
; CHECK: [[MIDDLE_BLOCK]]:

llvm/test/Transforms/LoopVectorize/single_early_exit_live_outs.ll

Lines changed: 76 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1994,6 +1994,36 @@ define i64 @same_exit_block_pre_inc_use1_reverse() {
19941994
; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
19951995
; CHECK: vector.body:
19961996
; CHECK-NEXT: [[INDEX1:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT4:%.*]], [[VECTOR_BODY]] ]
1997+
; CHECK-NEXT: [[OFFSET_IDX:%.*]] = sub i64 1023, [[INDEX1]]
1998+
; CHECK-NEXT: [[TMP0:%.*]] = getelementptr inbounds i8, ptr [[P1]], i64 [[OFFSET_IDX]]
1999+
; CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds i8, ptr [[TMP0]], i32 0
2000+
; CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds i8, ptr [[TMP1]], i32 -3
2001+
; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <4 x i8>, ptr [[TMP2]], align 1
2002+
; CHECK-NEXT: [[REVERSE:%.*]] = shufflevector <4 x i8> [[WIDE_LOAD]], <4 x i8> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
2003+
; CHECK-NEXT: [[TMP3:%.*]] = getelementptr inbounds i8, ptr [[P2]], i64 [[OFFSET_IDX]]
2004+
; CHECK-NEXT: [[TMP4:%.*]] = getelementptr inbounds i8, ptr [[TMP3]], i32 0
2005+
; CHECK-NEXT: [[TMP5:%.*]] = getelementptr inbounds i8, ptr [[TMP4]], i32 -3
2006+
; CHECK-NEXT: [[WIDE_LOAD2:%.*]] = load <4 x i8>, ptr [[TMP5]], align 1
2007+
; CHECK-NEXT: [[REVERSE3:%.*]] = shufflevector <4 x i8> [[WIDE_LOAD2]], <4 x i8> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
2008+
; CHECK-NEXT: [[TMP6:%.*]] = icmp eq <4 x i8> [[REVERSE]], [[REVERSE3]]
2009+
; CHECK-NEXT: [[INDEX_NEXT4]] = add nuw i64 [[INDEX1]], 4
2010+
; CHECK-NEXT: [[TMP7:%.*]] = xor <4 x i1> [[TMP6]], splat (i1 true)
2011+
; CHECK-NEXT: [[TMP8:%.*]] = call i1 @llvm.vector.reduce.or.v4i1(<4 x i1> [[TMP7]])
2012+
; CHECK-NEXT: [[TMP9:%.*]] = icmp eq i64 [[INDEX_NEXT4]], 1020
2013+
; CHECK-NEXT: [[TMP10:%.*]] = or i1 [[TMP8]], [[TMP9]]
2014+
; CHECK-NEXT: br i1 [[TMP10]], label [[MIDDLE_SPLIT:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP50:![0-9]+]]
2015+
; CHECK: middle.split:
2016+
; CHECK-NEXT: br i1 [[TMP8]], label [[VECTOR_EARLY_EXIT:%.*]], label [[MIDDLE_BLOCK:%.*]]
2017+
; CHECK: middle.block:
2018+
; CHECK-NEXT: br i1 false, label [[LOOP_END:%.*]], label [[SCALAR_PH]]
2019+
; CHECK: vector.early.exit:
2020+
; CHECK-NEXT: [[TMP11:%.*]] = call i64 @llvm.experimental.cttz.elts.i64.v4i1(<4 x i1> [[TMP7]], i1 true)
2021+
; CHECK-NEXT: [[TMP12:%.*]] = add i64 [[INDEX1]], [[TMP11]]
2022+
; CHECK-NEXT: [[TMP13:%.*]] = sub i64 1023, [[TMP12]]
2023+
; CHECK-NEXT: br label [[LOOP_END]]
2024+
; CHECK: scalar.ph:
2025+
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 3, [[MIDDLE_BLOCK]] ], [ 1023, [[ENTRY:%.*]] ]
2026+
; CHECK-NEXT: br label [[LOOP:%.*]]
19972027
; CHECK: loop:
19982028
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ [[INDEX_NEXT:%.*]], [[LOOP_INC:%.*]] ], [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ]
19992029
; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i8, ptr [[P1]], i64 [[INDEX]]
@@ -2005,6 +2035,9 @@ define i64 @same_exit_block_pre_inc_use1_reverse() {
20052035
; CHECK: loop.inc:
20062036
; CHECK-NEXT: [[INDEX_NEXT]] = add i64 [[INDEX]], -1
20072037
; CHECK-NEXT: [[EXITCOND:%.*]] = icmp eq i64 [[INDEX_NEXT]], 0
2038+
; CHECK-NEXT: br i1 [[EXITCOND]], label [[LOOP_END]], label [[LOOP]], !llvm.loop [[LOOP51:![0-9]+]]
2039+
; CHECK: loop.end:
2040+
; CHECK-NEXT: [[RETVAL:%.*]] = phi i64 [ [[INDEX]], [[LOOP]] ], [ 1024, [[LOOP_INC]] ], [ 1024, [[MIDDLE_BLOCK]] ], [ [[TMP13]], [[VECTOR_EARLY_EXIT]] ]
20082041
; CHECK-NEXT: ret i64 [[RETVAL]]
20092042
;
20102043
entry:
@@ -2106,6 +2139,31 @@ define i64 @same_exit_block_pre_inc_use1_deref_ptrs(ptr dereferenceable(1024) %p
21062139
; CHECK-NEXT: [[TMP7:%.*]] = call i1 @llvm.vector.reduce.or.v4i1(<4 x i1> [[TMP6]])
21072140
; CHECK-NEXT: [[TMP8:%.*]] = icmp eq i64 [[INDEX_NEXT3]], 64
21082141
; CHECK-NEXT: [[TMP9:%.*]] = or i1 [[TMP7]], [[TMP8]]
2142+
; CHECK-NEXT: br i1 [[TMP9]], label [[MIDDLE_SPLIT:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP52:![0-9]+]]
2143+
; CHECK: middle.split:
2144+
; CHECK-NEXT: br i1 [[TMP7]], label [[VECTOR_EARLY_EXIT:%.*]], label [[MIDDLE_BLOCK:%.*]]
2145+
; CHECK: middle.block:
2146+
; CHECK-NEXT: br i1 true, label [[LOOP_END:%.*]], label [[SCALAR_PH]]
2147+
; CHECK: vector.early.exit:
2148+
; CHECK-NEXT: [[TMP11:%.*]] = call i64 @llvm.experimental.cttz.elts.i64.v4i1(<4 x i1> [[TMP6]], i1 true)
2149+
; CHECK-NEXT: [[TMP10:%.*]] = add i64 [[INDEX1]], [[TMP11]]
2150+
; CHECK-NEXT: [[EARLY_EXIT_VALUE:%.*]] = add i64 3, [[TMP10]]
2151+
; CHECK-NEXT: br label [[LOOP_END]]
2152+
; CHECK: scalar.ph:
2153+
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 67, [[MIDDLE_BLOCK]] ], [ 3, [[ENTRY:%.*]] ]
2154+
; CHECK-NEXT: br label [[LOOP:%.*]]
2155+
; CHECK: loop:
2156+
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ [[INDEX_NEXT:%.*]], [[LOOP_INC:%.*]] ], [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ]
2157+
; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i8, ptr [[P1]], i64 [[INDEX]]
2158+
; CHECK-NEXT: [[LD1:%.*]] = load i8, ptr [[ARRAYIDX]], align 1
2159+
; CHECK-NEXT: [[ARRAYIDX1:%.*]] = getelementptr inbounds i8, ptr [[P2]], i64 [[INDEX]]
2160+
; CHECK-NEXT: [[LD2:%.*]] = load i8, ptr [[ARRAYIDX1]], align 1
2161+
; CHECK-NEXT: [[CMP3:%.*]] = icmp eq i8 [[LD1]], [[LD2]]
2162+
; CHECK-NEXT: br i1 [[CMP3]], label [[LOOP_INC]], label [[LOOP_END]]
2163+
; CHECK: loop.inc:
2164+
; CHECK-NEXT: [[INDEX_NEXT]] = add i64 [[INDEX]], 1
2165+
; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[INDEX_NEXT]], 67
2166+
; CHECK-NEXT: br i1 [[EXITCOND]], label [[LOOP]], label [[LOOP_END]], !llvm.loop [[LOOP53:![0-9]+]]
21092167
; CHECK: loop.end:
21102168
; CHECK-NEXT: [[RETVAL:%.*]] = phi i64 [ [[INDEX]], [[LOOP]] ], [ 67, [[LOOP_INC]] ], [ 67, [[MIDDLE_BLOCK]] ], [ [[EARLY_EXIT_VALUE]], [[VECTOR_EARLY_EXIT]] ]
21112169
; CHECK-NEXT: ret i64 [[RETVAL]]
@@ -2136,6 +2194,7 @@ declare i32 @foo(i32) readonly
21362194
declare <vscale x 4 x i32> @foo_vec(<vscale x 4 x i32>)
21372195

21382196
attributes #0 = { "vector-function-abi-variant"="_ZGVsNxv_foo(foo_vec)" }
2197+
21392198
;.
21402199
; CHECK: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]]}
21412200
; CHECK: [[META1]] = !{!"llvm.loop.isvectorized", i32 1}
@@ -2175,4 +2234,20 @@ attributes #0 = { "vector-function-abi-variant"="_ZGVsNxv_foo(foo_vec)" }
21752234
; CHECK: [[LOOP35]] = distinct !{[[LOOP35]], [[META2]], [[META1]]}
21762235
; CHECK: [[LOOP36]] = distinct !{[[LOOP36]], [[META1]], [[META2]]}
21772236
; CHECK: [[LOOP37]] = distinct !{[[LOOP37]], [[META2]], [[META1]]}
2178-
2237+
; CHECK: [[LOOP38]] = distinct !{[[LOOP38]], [[META1]], [[META2]]}
2238+
; CHECK: [[LOOP39]] = distinct !{[[LOOP39]], [[META2]], [[META1]]}
2239+
; CHECK: [[LOOP40]] = distinct !{[[LOOP40]], [[META1]], [[META2]]}
2240+
; CHECK: [[LOOP41]] = distinct !{[[LOOP41]], [[META2]], [[META1]]}
2241+
; CHECK: [[LOOP42]] = distinct !{[[LOOP42]], [[META1]], [[META2]]}
2242+
; CHECK: [[LOOP43]] = distinct !{[[LOOP43]], [[META2]], [[META1]]}
2243+
; CHECK: [[LOOP44]] = distinct !{[[LOOP44]], [[META1]], [[META2]]}
2244+
; CHECK: [[LOOP45]] = distinct !{[[LOOP45]], [[META2]], [[META1]]}
2245+
; CHECK: [[LOOP46]] = distinct !{[[LOOP46]], [[META1]], [[META2]]}
2246+
; CHECK: [[LOOP47]] = distinct !{[[LOOP47]], [[META2]], [[META1]]}
2247+
; CHECK: [[LOOP48]] = distinct !{[[LOOP48]], [[META1]], [[META2]]}
2248+
; CHECK: [[LOOP49]] = distinct !{[[LOOP49]], [[META2]], [[META1]]}
2249+
; CHECK: [[LOOP50]] = distinct !{[[LOOP50]], [[META1]], [[META2]]}
2250+
; CHECK: [[LOOP51]] = distinct !{[[LOOP51]], [[META2]], [[META1]]}
2251+
; CHECK: [[LOOP52]] = distinct !{[[LOOP52]], [[META1]], [[META2]]}
2252+
; CHECK: [[LOOP53]] = distinct !{[[LOOP53]], [[META2]], [[META1]]}
2253+
;.

0 commit comments

Comments
 (0)