Skip to content

Commit 13ffde3

Browse files
committed
[ConstraintElim] Remove dead compares after simplification.
Remove compares after replacing all uses. Cleaning dead compares can enable additional simplifications when adjusting the position of the pass slightly. In particular, it seems like the additional dead instructions may prevent SimplifyCFG performing some folds. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D158760
1 parent a902015 commit 13ffde3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+70
-633
lines changed

llvm/lib/Transforms/Scalar/ConstraintElimination.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1069,7 +1069,8 @@ static std::optional<bool> checkCondition(CmpInst *Cmp, ConstraintInfo &Info,
10691069
static bool checkAndReplaceCondition(
10701070
CmpInst *Cmp, ConstraintInfo &Info, unsigned NumIn, unsigned NumOut,
10711071
Instruction *ContextInst, Module *ReproducerModule,
1072-
ArrayRef<ReproducerEntry> ReproducerCondStack, DominatorTree &DT) {
1072+
ArrayRef<ReproducerEntry> ReproducerCondStack, DominatorTree &DT,
1073+
SmallVectorImpl<Instruction *> &ToRemove) {
10731074
auto ReplaceCmpWithConstant = [&](CmpInst *Cmp, bool IsTrue) {
10741075
generateReproducer(Cmp, ReproducerModule, ReproducerCondStack, Info, DT);
10751076
Constant *ConstantC = ConstantInt::getBool(
@@ -1090,6 +1091,8 @@ static bool checkAndReplaceCondition(
10901091
return !II || II->getIntrinsicID() != Intrinsic::assume;
10911092
});
10921093
NumCondsRemoved++;
1094+
if (Cmp->use_empty())
1095+
ToRemove.push_back(Cmp);
10931096
return true;
10941097
};
10951098

@@ -1355,7 +1358,7 @@ static bool eliminateConstraints(Function &F, DominatorTree &DT,
13551358
} else if (auto *Cmp = dyn_cast<ICmpInst>(Inst)) {
13561359
bool Simplified = checkAndReplaceCondition(
13571360
Cmp, Info, CB.NumIn, CB.NumOut, CB.getContextInst(),
1358-
ReproducerModule.get(), ReproducerCondStack, S.DT);
1361+
ReproducerModule.get(), ReproducerCondStack, S.DT, ToRemove);
13591362
if (!Simplified && match(CB.getContextInst(),
13601363
m_LogicalAnd(m_Value(), m_Specific(Inst)))) {
13611364
Simplified =

llvm/test/Transforms/ConstraintElimination/add-nsw.ll

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -64,16 +64,12 @@ define void @test.not.sge.slt(i8 %start, i8 %high) {
6464
; CHECK: if.then:
6565
; CHECK-NEXT: ret void
6666
; CHECK: if.end:
67-
; CHECK-NEXT: [[T_0:%.*]] = icmp slt i8 [[START]], [[HIGH]]
6867
; CHECK-NEXT: call void @use(i1 true)
6968
; CHECK-NEXT: [[START_1:%.*]] = add nsw i8 [[START]], 1
70-
; CHECK-NEXT: [[T_1:%.*]] = icmp slt i8 [[START_1]], [[HIGH]]
7169
; CHECK-NEXT: call void @use(i1 true)
7270
; CHECK-NEXT: [[START_2:%.*]] = add nsw i8 [[START]], 2
73-
; CHECK-NEXT: [[T_2:%.*]] = icmp slt i8 [[START_2]], [[HIGH]]
7471
; CHECK-NEXT: call void @use(i1 true)
7572
; CHECK-NEXT: [[START_3:%.*]] = add nsw i8 [[START]], 3
76-
; CHECK-NEXT: [[T_3:%.*]] = icmp slt i8 [[START_3]], [[HIGH]]
7773
; CHECK-NEXT: call void @use(i1 true)
7874
; CHECK-NEXT: [[START_4:%.*]] = add nsw i8 [[START]], 4
7975
; CHECK-NEXT: [[C_4:%.*]] = icmp slt i8 [[START_4]], [[HIGH]]
@@ -120,10 +116,8 @@ define void @test.decompose.nonconst(i8 %a, i8 %b, i8 %c, i8 %d) {
120116
; CHECK-NEXT: br i1 [[AND_1]], label [[IF_THEN_2:%.*]], label [[IF_END]]
121117
; CHECK: if.then.2:
122118
; CHECK-NEXT: [[ADD_0:%.*]] = add nsw i8 [[A]], [[B]]
123-
; CHECK-NEXT: [[T_0:%.*]] = icmp sge i8 [[ADD_0]], [[C]]
124119
; CHECK-NEXT: call void @use(i1 true)
125120
; CHECK-NEXT: [[ADD_1:%.*]] = add nsw i8 [[A]], [[A]]
126-
; CHECK-NEXT: [[T_1:%.*]] = icmp sge i8 [[ADD_0]], [[C]]
127121
; CHECK-NEXT: call void @use(i1 true)
128122
; CHECK-NEXT: [[ADD_2:%.*]] = add nsw i8 [[A]], [[D:%.*]]
129123
; CHECK-NEXT: [[C_4:%.*]] = icmp sge i8 [[ADD_2]], [[C]]
@@ -218,10 +212,8 @@ define void @test.sge.slt.add.neg(i8 %start, i8 %high) {
218212
; CHECK-NEXT: [[C_4:%.*]] = icmp slt i8 [[START_2]], [[HIGH]]
219213
; CHECK-NEXT: call void @use(i1 [[C_4]])
220214
; CHECK-NEXT: [[START_3:%.*]] = add nsw i8 [[START]], -3
221-
; CHECK-NEXT: [[T_1:%.*]] = icmp slt i8 [[START_3]], [[HIGH]]
222215
; CHECK-NEXT: call void @use(i1 true)
223216
; CHECK-NEXT: [[START_4:%.*]] = add nsw i8 [[START]], -4
224-
; CHECK-NEXT: [[T_2:%.*]] = icmp slt i8 [[START_4]], [[HIGH]]
225217
; CHECK-NEXT: call void @use(i1 true)
226218
; CHECK-NEXT: ret void
227219
;
@@ -254,7 +246,6 @@ define i1 @test_ult_add_nsw_pos_1(i8 %start, i8 %high) {
254246
; CHECK-NEXT: [[ADD_EXT:%.*]] = add nsw i16 [[START_EXT]], 3
255247
; CHECK-NEXT: [[C_1:%.*]] = icmp ult i16 [[ADD_EXT]], [[HIGH_EXT]]
256248
; CHECK-NEXT: call void @llvm.assume(i1 [[C_1]])
257-
; CHECK-NEXT: [[T:%.*]] = icmp ult i16 [[START_EXT]], [[HIGH_EXT]]
258249
; CHECK-NEXT: ret i1 true
259250
;
260251
entry:
@@ -276,7 +267,6 @@ define i1 @test_ult_add_nsw_pos_1_assume_pos(i8 %start, i8 %high) {
276267
; CHECK-NEXT: [[ADD:%.*]] = add nsw i8 [[START]], 3
277268
; CHECK-NEXT: [[C_1:%.*]] = icmp ult i8 [[ADD]], [[HIGH:%.*]]
278269
; CHECK-NEXT: call void @llvm.assume(i1 [[C_1]])
279-
; CHECK-NEXT: [[T:%.*]] = icmp ult i8 [[START]], [[HIGH]]
280270
; CHECK-NEXT: ret i1 true
281271
;
282272
entry:
@@ -316,7 +306,6 @@ define i1 @test_ult_add_nsw_pos_1_cmp_no_ext(i8 %start, i8 %high) {
316306
; CHECK-NEXT: [[ADD_EXT:%.*]] = add nsw i16 [[START_EXT]], 3
317307
; CHECK-NEXT: [[C_1:%.*]] = icmp ult i16 [[ADD_EXT]], [[HIGH_EXT]]
318308
; CHECK-NEXT: call void @llvm.assume(i1 [[C_1]])
319-
; CHECK-NEXT: [[T:%.*]] = icmp ult i8 [[START]], [[HIGH]]
320309
; CHECK-NEXT: ret i1 true
321310
;
322311
entry:
@@ -338,7 +327,6 @@ define i1 @test_ult_add_nsw_pos_2(i8 %start, i8 %high) {
338327
; CHECK-NEXT: [[ADD_EXT:%.*]] = add nsw i16 [[START_EXT]], 3
339328
; CHECK-NEXT: [[C_1:%.*]] = icmp ult i16 [[ADD_EXT]], [[HIGH_EXT]]
340329
; CHECK-NEXT: call void @llvm.assume(i1 [[C_1]])
341-
; CHECK-NEXT: [[F:%.*]] = icmp uge i16 [[START_EXT]], [[HIGH_EXT]]
342330
; CHECK-NEXT: ret i1 false
343331
;
344332
entry:
@@ -360,7 +348,6 @@ define i1 @test_ult_add_nsw_pos_2_assume_pos(i8 %start, i8 %high) {
360348
; CHECK-NEXT: [[ADD:%.*]] = add nsw i8 [[START]], 3
361349
; CHECK-NEXT: [[C_1:%.*]] = icmp ult i8 [[ADD]], [[HIGH:%.*]]
362350
; CHECK-NEXT: call void @llvm.assume(i1 [[C_1]])
363-
; CHECK-NEXT: [[F:%.*]] = icmp uge i8 [[START]], [[HIGH]]
364351
; CHECK-NEXT: ret i1 false
365352
;
366353
entry:
@@ -382,7 +369,6 @@ define i1 @test_ult_add_nsw_pos_2_cmp_no_ext(i8 %start, i8 %high) {
382369
; CHECK-NEXT: [[ADD_EXT:%.*]] = add nsw i16 [[START_EXT]], 3
383370
; CHECK-NEXT: [[C_1:%.*]] = icmp ult i16 [[ADD_EXT]], [[HIGH_EXT]]
384371
; CHECK-NEXT: call void @llvm.assume(i1 [[C_1]])
385-
; CHECK-NEXT: [[C:%.*]] = icmp uge i8 [[START]], [[HIGH]]
386372
; CHECK-NEXT: ret i1 false
387373
;
388374
entry:
@@ -453,7 +439,6 @@ define i1 @test_ult_add_nsw_pos_4(i8 %start, i8 %high) {
453439
; CHECK-NEXT: [[C_1:%.*]] = icmp ult i16 [[ADD_EXT]], [[HIGH_EXT]]
454440
; CHECK-NEXT: call void @llvm.assume(i1 [[C_1]])
455441
; CHECK-NEXT: [[ADD_2:%.*]] = add nsw i16 [[START_EXT]], 2
456-
; CHECK-NEXT: [[C:%.*]] = icmp ult i16 [[ADD_2]], [[HIGH_EXT]]
457442
; CHECK-NEXT: ret i1 true
458443
;
459444
entry:
@@ -477,7 +462,6 @@ define i1 @test_ult_add_nsw_pos_4_assume_pos(i8 %start, i8 %high) {
477462
; CHECK-NEXT: [[C_1:%.*]] = icmp ult i8 [[ADD]], [[HIGH:%.*]]
478463
; CHECK-NEXT: call void @llvm.assume(i1 [[C_1]])
479464
; CHECK-NEXT: [[ADD_2:%.*]] = add nsw i8 [[START]], 2
480-
; CHECK-NEXT: [[C:%.*]] = icmp ult i8 [[ADD_2]], [[HIGH]]
481465
; CHECK-NEXT: ret i1 true
482466
;
483467
entry:
@@ -679,7 +663,6 @@ define i1 @test_ult_add_nsw_var_8_all_pos(i8 %start, i8 %off.1, i8 %off.2, i8 %h
679663
; CHECK-NEXT: [[OFF_1_ULT:%.*]] = icmp ult i8 [[OFF_1]], [[OFF_2]]
680664
; CHECK-NEXT: call void @llvm.assume(i1 [[OFF_1_ULT]])
681665
; CHECK-NEXT: [[ADD_OFF_2:%.*]] = add nsw i8 [[START]], [[OFF_1]]
682-
; CHECK-NEXT: [[C:%.*]] = icmp ult i8 [[ADD_OFF_2]], [[HIGH]]
683666
; CHECK-NEXT: ret i1 true
684667
;
685668
entry:

llvm/test/Transforms/ConstraintElimination/add-nuw.ll

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,12 @@ define void @test.not.uge.ult(i8 %start, i8 %low, i8 %high) {
1010
; CHECK: if.then:
1111
; CHECK-NEXT: ret void
1212
; CHECK: if.end:
13-
; CHECK-NEXT: [[T_0:%.*]] = icmp ult i8 [[START]], [[HIGH]]
1413
; CHECK-NEXT: call void @use(i1 true)
1514
; CHECK-NEXT: [[START_1:%.*]] = add nuw i8 [[START]], 1
16-
; CHECK-NEXT: [[T_1:%.*]] = icmp ult i8 [[START_1]], [[HIGH]]
1715
; CHECK-NEXT: call void @use(i1 true)
1816
; CHECK-NEXT: [[START_2:%.*]] = add nuw i8 [[START]], 2
19-
; CHECK-NEXT: [[T_2:%.*]] = icmp ult i8 [[START_2]], [[HIGH]]
2017
; CHECK-NEXT: call void @use(i1 true)
2118
; CHECK-NEXT: [[START_3:%.*]] = add nuw i8 [[START]], 3
22-
; CHECK-NEXT: [[T_3:%.*]] = icmp ult i8 [[START_3]], [[HIGH]]
2319
; CHECK-NEXT: call void @use(i1 true)
2420
; CHECK-NEXT: [[START_4:%.*]] = add nuw i8 [[START]], 4
2521
; CHECK-NEXT: [[C_4:%.*]] = icmp ult i8 [[START_4]], [[HIGH]]
@@ -61,19 +57,14 @@ define void @test.not.uge.ule(i8 %start, i8 %low, i8 %high) {
6157
; CHECK: if.then:
6258
; CHECK-NEXT: ret void
6359
; CHECK: if.end:
64-
; CHECK-NEXT: [[T_0:%.*]] = icmp ule i8 [[START]], [[HIGH]]
6560
; CHECK-NEXT: call void @use(i1 true)
6661
; CHECK-NEXT: [[START_1:%.*]] = add nuw i8 [[START]], 1
67-
; CHECK-NEXT: [[T_1:%.*]] = icmp ule i8 [[START_1]], [[HIGH]]
6862
; CHECK-NEXT: call void @use(i1 true)
6963
; CHECK-NEXT: [[START_2:%.*]] = add nuw i8 [[START]], 2
70-
; CHECK-NEXT: [[T_2:%.*]] = icmp ule i8 [[START_2]], [[HIGH]]
7164
; CHECK-NEXT: call void @use(i1 true)
7265
; CHECK-NEXT: [[START_3:%.*]] = add nuw i8 [[START]], 3
73-
; CHECK-NEXT: [[T_3:%.*]] = icmp ule i8 [[START_3]], [[HIGH]]
7466
; CHECK-NEXT: call void @use(i1 true)
7567
; CHECK-NEXT: [[START_4:%.*]] = add nuw i8 [[START]], 4
76-
; CHECK-NEXT: [[T_4:%.*]] = icmp ule i8 [[START_4]], [[HIGH]]
7768
; CHECK-NEXT: call void @use(i1 true)
7869
; CHECK-NEXT: [[START_5:%.*]] = add nuw i8 [[START]], 5
7970
; CHECK-NEXT: [[C_5:%.*]] = icmp ule i8 [[START_5]], [[HIGH]]
@@ -120,19 +111,14 @@ define void @test.not.uge.ugt(i8 %start, i8 %low, i8 %high) {
120111
; CHECK: if.then:
121112
; CHECK-NEXT: ret void
122113
; CHECK: if.end:
123-
; CHECK-NEXT: [[F_0:%.*]] = icmp ugt i8 [[START]], [[HIGH]]
124114
; CHECK-NEXT: call void @use(i1 false)
125115
; CHECK-NEXT: [[START_1:%.*]] = add nuw i8 [[START]], 1
126-
; CHECK-NEXT: [[F_1:%.*]] = icmp ugt i8 [[START_1]], [[HIGH]]
127116
; CHECK-NEXT: call void @use(i1 false)
128117
; CHECK-NEXT: [[START_2:%.*]] = add nuw i8 [[START]], 2
129-
; CHECK-NEXT: [[F_2:%.*]] = icmp ugt i8 [[START_2]], [[HIGH]]
130118
; CHECK-NEXT: call void @use(i1 false)
131119
; CHECK-NEXT: [[START_3:%.*]] = add nuw i8 [[START]], 3
132-
; CHECK-NEXT: [[F_3:%.*]] = icmp ugt i8 [[START_3]], [[HIGH]]
133120
; CHECK-NEXT: call void @use(i1 false)
134121
; CHECK-NEXT: [[START_4:%.*]] = add nuw i8 [[START]], 4
135-
; CHECK-NEXT: [[F_4:%.*]] = icmp ugt i8 [[START_4]], [[HIGH]]
136122
; CHECK-NEXT: call void @use(i1 false)
137123
; CHECK-NEXT: [[START_5:%.*]] = add nuw i8 [[START]], 5
138124
; CHECK-NEXT: [[C_5:%.*]] = icmp ugt i8 [[START_5]], [[HIGH]]
@@ -183,16 +169,12 @@ define void @test.not.uge.uge(i8 %start, i8 %low, i8 %high) {
183169
; CHECK: if.then:
184170
; CHECK-NEXT: ret void
185171
; CHECK: if.end:
186-
; CHECK-NEXT: [[F_0:%.*]] = icmp ugt i8 [[START]], [[HIGH]]
187172
; CHECK-NEXT: call void @use(i1 false)
188173
; CHECK-NEXT: [[START_1:%.*]] = add nuw i8 [[START]], 1
189-
; CHECK-NEXT: [[F_1:%.*]] = icmp uge i8 [[START_1]], [[HIGH]]
190174
; CHECK-NEXT: call void @use(i1 false)
191175
; CHECK-NEXT: [[START_2:%.*]] = add nuw i8 [[START]], 2
192-
; CHECK-NEXT: [[F_2:%.*]] = icmp uge i8 [[START_2]], [[HIGH]]
193176
; CHECK-NEXT: call void @use(i1 false)
194177
; CHECK-NEXT: [[START_3:%.*]] = add nuw i8 [[START]], 3
195-
; CHECK-NEXT: [[F_3:%.*]] = icmp uge i8 [[START_3]], [[HIGH]]
196178
; CHECK-NEXT: call void @use(i1 false)
197179
; CHECK-NEXT: [[START_4:%.*]] = add nuw i8 [[START]], 4
198180
; CHECK-NEXT: [[C_4:%.*]] = icmp uge i8 [[START_4]], [[HIGH]]
@@ -251,10 +233,8 @@ define void @test.decompose.nonconst(i8 %a, i8 %b, i8 %c, i8 %d) {
251233
; CHECK-NEXT: br i1 [[AND_1]], label [[IF_THEN_2:%.*]], label [[IF_END]]
252234
; CHECK: if.then.2:
253235
; CHECK-NEXT: [[ADD_0:%.*]] = add nuw i8 [[A]], [[B]]
254-
; CHECK-NEXT: [[T_0:%.*]] = icmp uge i8 [[ADD_0]], [[C]]
255236
; CHECK-NEXT: call void @use(i1 true)
256237
; CHECK-NEXT: [[ADD_1:%.*]] = add nuw i8 [[A]], [[A]]
257-
; CHECK-NEXT: [[T_1:%.*]] = icmp uge i8 [[ADD_0]], [[C]]
258238
; CHECK-NEXT: call void @use(i1 true)
259239
; CHECK-NEXT: [[ADD_2:%.*]] = add nuw i8 [[A]], [[D:%.*]]
260240
; CHECK-NEXT: [[C_4:%.*]] = icmp uge i8 [[ADD_2]], [[C]]
@@ -343,7 +323,6 @@ define i1 @test_n_must_ule_1_due_to_nuw(i8 %n, i8 %i) {
343323
; CHECK-NEXT: [[C_1:%.*]] = icmp uge i8 [[I]], [[ADD]]
344324
; CHECK-NEXT: br i1 [[C_1]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]
345325
; CHECK: if.then:
346-
; CHECK-NEXT: [[T:%.*]] = icmp ule i8 [[N]], 1
347326
; CHECK-NEXT: ret i1 true
348327
; CHECK: if.end:
349328
; CHECK-NEXT: [[F:%.*]] = icmp ule i8 [[N]], 1
@@ -402,7 +381,6 @@ define i1 @test_n_must_ule_2_due_to_nuw(i8 %n, i8 %i) {
402381
; CHECK-NEXT: [[C_1:%.*]] = icmp uge i8 [[I]], [[ADD]]
403382
; CHECK-NEXT: br i1 [[C_1]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]
404383
; CHECK: if.then:
405-
; CHECK-NEXT: [[T:%.*]] = icmp ule i8 [[N]], 2
406384
; CHECK-NEXT: ret i1 true
407385
; CHECK: if.end:
408386
; CHECK-NEXT: [[F:%.*]] = icmp ule i8 [[N]], 2
@@ -462,7 +440,6 @@ define i1 @add_nuw_neg_pr54224_i16(i16 %a) {
462440
; CHECK-NEXT: [[C_1:%.*]] = icmp ugt i16 0, [[NEG2]]
463441
; CHECK-NEXT: br i1 [[C_1]], label [[EXIT_1:%.*]], label [[EXIT_2:%.*]]
464442
; CHECK: exit.1:
465-
; CHECK-NEXT: [[C_2:%.*]] = icmp ugt i16 [[A]], 0
466443
; CHECK-NEXT: ret i1 false
467444
; CHECK: exit.2:
468445
; CHECK-NEXT: [[C_3:%.*]] = icmp ugt i16 [[A]], 0
@@ -516,13 +493,11 @@ define i1 @add_nuw_neg2_i8(i8 %a) {
516493
; CHECK-NEXT: [[C_1:%.*]] = icmp ult i8 [[NEG2]], -2
517494
; CHECK-NEXT: br i1 [[C_1]], label [[EXIT_1:%.*]], label [[EXIT_2:%.*]]
518495
; CHECK: exit.1:
519-
; CHECK-NEXT: [[T_1:%.*]] = icmp ult i8 [[A]], 2
520496
; CHECK-NEXT: [[C_2:%.*]] = icmp ult i8 [[A]], 1
521497
; CHECK-NEXT: [[RES_1:%.*]] = xor i1 true, [[C_2]]
522498
; CHECK-NEXT: ret i1 [[RES_1]]
523499
; CHECK: exit.2:
524500
; CHECK-NEXT: [[C_3:%.*]] = icmp ult i8 [[A]], 3
525-
; CHECK-NEXT: [[F_1:%.*]] = icmp ult i8 [[A]], 2
526501
; CHECK-NEXT: [[RES_2:%.*]] = xor i1 [[C_3]], false
527502
; CHECK-NEXT: ret i1 [[RES_2]]
528503
;
@@ -588,7 +563,6 @@ define i1 @test_chained_adds_nuw_1(i8 %a, i8 %b) {
588563
; CHECK-NEXT: call void @llvm.assume(i1 [[C_B]])
589564
; CHECK-NEXT: [[ADD_1:%.*]] = add nuw i8 [[A]], [[B]]
590565
; CHECK-NEXT: [[ADD_2:%.*]] = add nuw i8 [[ADD_1]], 2
591-
; CHECK-NEXT: [[T_1:%.*]] = icmp uge i8 [[ADD_2]], 13
592566
; CHECK-NEXT: [[C_1:%.*]] = icmp uge i8 [[ADD_2]], 14
593567
; CHECK-NEXT: [[RES_1:%.*]] = xor i1 true, [[C_1]]
594568
; CHECK-NEXT: ret i1 [[RES_1]]
@@ -616,7 +590,6 @@ define i1 @test_chained_adds_nuw_2(i8 %a, i8 %b) {
616590
; CHECK-NEXT: [[ADD_1:%.*]] = add nuw i8 [[A]], [[B]]
617591
; CHECK-NEXT: [[ADD_2:%.*]] = add nuw i8 [[ADD_1]], 2
618592
; CHECK-NEXT: [[ADD_3:%.*]] = add nuw i8 [[ADD_2]], [[A]]
619-
; CHECK-NEXT: [[T_1:%.*]] = icmp uge i8 [[ADD_3]], 18
620593
; CHECK-NEXT: [[C_1:%.*]] = icmp uge i8 [[ADD_3]], 19
621594
; CHECK-NEXT: [[RES_1:%.*]] = xor i1 true, [[C_1]]
622595
; CHECK-NEXT: ret i1 [[RES_1]]
@@ -645,7 +618,6 @@ define i1 @test_chained_adds_nuw_3(i8 %a, i8 %b) {
645618
; CHECK-NEXT: [[ADD_1:%.*]] = add nuw i8 [[A]], 2
646619
; CHECK-NEXT: [[ADD_2:%.*]] = add nuw i8 [[ADD_1]], [[B]]
647620
; CHECK-NEXT: [[ADD_3:%.*]] = add nuw i8 [[ADD_2]], [[A]]
648-
; CHECK-NEXT: [[T_1:%.*]] = icmp uge i8 [[ADD_3]], 18
649621
; CHECK-NEXT: [[C_1:%.*]] = icmp uge i8 [[ADD_3]], 19
650622
; CHECK-NEXT: [[RES_1:%.*]] = xor i1 true, [[C_1]]
651623
; CHECK-NEXT: ret i1 [[RES_1]]
@@ -674,7 +646,6 @@ define i1 @test_chained_adds_nuw_4(i8 %a, i8 %b) {
674646
; CHECK-NEXT: [[ADD_1:%.*]] = add nuw i8 [[A]], 2
675647
; CHECK-NEXT: [[ADD_2:%.*]] = add nuw i8 [[ADD_1]], [[B]]
676648
; CHECK-NEXT: [[ADD_3:%.*]] = add nuw i8 [[ADD_2]], 10
677-
; CHECK-NEXT: [[T_1:%.*]] = icmp uge i8 [[ADD_3]], 23
678649
; CHECK-NEXT: [[C_1:%.*]] = icmp uge i8 [[ADD_3]], 24
679650
; CHECK-NEXT: [[RES_1:%.*]] = xor i1 true, [[C_1]]
680651
; CHECK-NEXT: ret i1 [[RES_1]]

llvm/test/Transforms/ConstraintElimination/analysis-invalidation.ll

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
12
; RUN: opt -passes='require<demanded-bits>,constraint-elimination,require<demanded-bits>' -disable-verify -verify-analysis-invalidation=false -debug-pass-manager -disable-output %s 2>&1 | FileCheck %s
23

34
; Check that constraint-elimination properly invalidates anlyses.
@@ -65,3 +66,5 @@ bb1:
6566
bb2:
6667
ret i1 false
6768
}
69+
;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
70+
; CHECK: {{.*}}

llvm/test/Transforms/ConstraintElimination/and-implied-by-operands.ll

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,6 @@ define i1 @test_remove_variables(i1 %c, ptr %A, i64 %B, ptr %C) {
138138
; CHECK: else.2:
139139
; CHECK-NEXT: ret i1 false
140140
; CHECK: exit:
141-
; CHECK-NEXT: [[T:%.*]] = icmp eq ptr null, null
142141
; CHECK-NEXT: ret i1 true
143142
;
144143
entry:
@@ -167,7 +166,6 @@ define i1 @test_and_op_0_simplified(i32 %v) {
167166
; CHECK-LABEL: @test_and_op_0_simplified(
168167
; CHECK-NEXT: entry:
169168
; CHECK-NEXT: [[C_1:%.*]] = icmp sgt i32 [[V:%.*]], 0
170-
; CHECK-NEXT: [[T_1:%.*]] = icmp sgt i32 0, 0
171169
; CHECK-NEXT: [[AND:%.*]] = and i1 false, [[C_1]]
172170
; CHECK-NEXT: ret i1 [[AND]]
173171
;
@@ -182,7 +180,6 @@ define i1 @test_and_op_1_simplified(i32 %v) {
182180
; CHECK-LABEL: @test_and_op_1_simplified(
183181
; CHECK-NEXT: entry:
184182
; CHECK-NEXT: [[C_1:%.*]] = icmp sgt i32 [[V:%.*]], 0
185-
; CHECK-NEXT: [[T_1:%.*]] = icmp sgt i32 0, 0
186183
; CHECK-NEXT: [[AND:%.*]] = and i1 [[C_1]], false
187184
; CHECK-NEXT: ret i1 [[AND]]
188185
;

0 commit comments

Comments
 (0)