Skip to content

Commit 7755c26

Browse files
committed
[SCEV] Include type when printing constant max backedge taken count
When printing the result of the analysis, i8 -1 and i64 -1 are quite different in terms of analysis quality. In a recent conversion with a new contributor, we ran into exactly this confusion. Adding the type for constant scevs more globally seems worthwhile, but introduces a much larger test diff. I'm splitting this off first since it addresses the immediate need, and then going to do some further changes to clarify a few related bits of analysis result output.
1 parent 67c82d6 commit 7755c26

File tree

91 files changed

+499
-503
lines changed

Some content is hidden

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

91 files changed

+499
-503
lines changed

llvm/lib/Analysis/ScalarEvolution.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13501,7 +13501,8 @@ static void PrintLoopInfo(raw_ostream &OS, ScalarEvolution *SE,
1350113501

1350213502
auto *ConstantBTC = SE->getConstantMaxBackedgeTakenCount(L);
1350313503
if (!isa<SCEVCouldNotCompute>(ConstantBTC)) {
13504-
OS << "constant max backedge-taken count is " << *ConstantBTC;
13504+
OS << "constant max backedge-taken count is "
13505+
<< *ConstantBTC->getType() << " " << *ConstantBTC;
1350513506
if (SE->isBackedgeTakenCountMaxOrZero(L))
1350613507
OS << ", actual taken count either this or zero.";
1350713508
} else {

llvm/test/Analysis/ScalarEvolution/2008-11-18-Stride1.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ define i32 @f(i32 %x) nounwind readnone {
1111
; CHECK-LABEL: 'f'
1212
; CHECK-NEXT: Determining loop execution counts for: @f
1313
; CHECK-NEXT: Loop %bb: backedge-taken count is ((-5 + %x) /u 3)
14-
; CHECK-NEXT: Loop %bb: constant max backedge-taken count is 1431655764
14+
; CHECK-NEXT: Loop %bb: constant max backedge-taken count is i32 1431655764
1515
; CHECK-NEXT: Loop %bb: symbolic max backedge-taken count is ((-5 + %x) /u 3)
1616
; CHECK-NEXT: Loop %bb: Predicated backedge-taken count is ((-5 + %x) /u 3)
1717
; CHECK-NEXT: Predicates:

llvm/test/Analysis/ScalarEvolution/2008-11-18-Stride2.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ define i32 @f(i32 %x) nounwind readnone {
99
; CHECK-LABEL: 'f'
1010
; CHECK-NEXT: Determining loop execution counts for: @f
1111
; CHECK-NEXT: Loop %bb: backedge-taken count is (((-3 + (-1 * (1 umin (-3 + (-1 * %x) + (1000 umax (3 + %x)))))<nuw><nsw> + (-1 * %x) + (1000 umax (3 + %x))) /u 3) + (1 umin (-3 + (-1 * %x) + (1000 umax (3 + %x)))))
12-
; CHECK-NEXT: Loop %bb: constant max backedge-taken count is 334
12+
; CHECK-NEXT: Loop %bb: constant max backedge-taken count is i32 334
1313
; CHECK-NEXT: Loop %bb: symbolic max backedge-taken count is (((-3 + (-1 * (1 umin (-3 + (-1 * %x) + (1000 umax (3 + %x)))))<nuw><nsw> + (-1 * %x) + (1000 umax (3 + %x))) /u 3) + (1 umin (-3 + (-1 * %x) + (1000 umax (3 + %x)))))
1414
; CHECK-NEXT: Loop %bb: Predicated backedge-taken count is (((-3 + (-1 * (1 umin (-3 + (-1 * %x) + (1000 umax (3 + %x)))))<nuw><nsw> + (-1 * %x) + (1000 umax (3 + %x))) /u 3) + (1 umin (-3 + (-1 * %x) + (1000 umax (3 + %x)))))
1515
; CHECK-NEXT: Predicates:

llvm/test/Analysis/ScalarEvolution/add-like-or.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ define void @mask-high(i64 %arg, ptr dereferenceable(4) %arg1) {
6666
; CHECK-NEXT: --> {(2 + (16 * (%arg /u 16))<nuw>)<nuw><nsw>,+,1}<%bb6> U: full-set S: full-set Exits: (1 + ((sext i32 %i to i64) smax (1 + (16 * (%arg /u 16))<nuw>)<nuw><nsw>))<nsw> LoopDispositions: { %bb6: Computable }
6767
; CHECK-NEXT: Determining loop execution counts for: @mask-high
6868
; CHECK-NEXT: Loop %bb6: backedge-taken count is (-1 + (-16 * (%arg /u 16)) + ((sext i32 %i to i64) smax (1 + (16 * (%arg /u 16))<nuw>)<nuw><nsw>))
69-
; CHECK-NEXT: Loop %bb6: constant max backedge-taken count is -9223372034707292162
69+
; CHECK-NEXT: Loop %bb6: constant max backedge-taken count is i64 -9223372034707292162
7070
; CHECK-NEXT: Loop %bb6: symbolic max backedge-taken count is (-1 + (-16 * (%arg /u 16)) + ((sext i32 %i to i64) smax (1 + (16 * (%arg /u 16))<nuw>)<nuw><nsw>))
7171
; CHECK-NEXT: Loop %bb6: Predicated backedge-taken count is (-1 + (-16 * (%arg /u 16)) + ((sext i32 %i to i64) smax (1 + (16 * (%arg /u 16))<nuw>)<nuw><nsw>))
7272
; CHECK-NEXT: Predicates:

llvm/test/Analysis/ScalarEvolution/addrec-computed-during-addrec-calculation.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ define void @test(ptr %p) {
2727
; CHECK-NEXT: --> {{\{\{}}%iv,+,1}<%loop2>,+,1}<%loop3> U: full-set S: full-set --> {%iv,+,1}<%loop2> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop.header: Variant, %loop2: Variant, %loop3: Computable }
2828
; CHECK-NEXT: Determining loop execution counts for: @test
2929
; CHECK-NEXT: Loop %loop2: Unpredictable backedge-taken count.
30-
; CHECK-NEXT: Loop %loop2: constant max backedge-taken count is -1
30+
; CHECK-NEXT: Loop %loop2: constant max backedge-taken count is i32 -1
3131
; CHECK-NEXT: Loop %loop2: symbolic max backedge-taken count is -1
3232
; CHECK-NEXT: Loop %loop2: Unpredictable predicated backedge-taken count.
3333
; CHECK-NEXT: Loop %loop3: backedge-taken count is false
34-
; CHECK-NEXT: Loop %loop3: constant max backedge-taken count is false
34+
; CHECK-NEXT: Loop %loop3: constant max backedge-taken count is i1 false
3535
; CHECK-NEXT: Loop %loop3: symbolic max backedge-taken count is false
3636
; CHECK-NEXT: Loop %loop3: Predicated backedge-taken count is false
3737
; CHECK-NEXT: Predicates:

llvm/test/Analysis/ScalarEvolution/addrec-sub-nsw.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ define i32 @test_1_non_negative(i32 %n) {
1212
; CHECK-NEXT: --> {1,+,1}<nuw><nsw><%loop> U: [1,-2147483648) S: [1,-2147483648) Exits: (1 smax %n) LoopDispositions: { %loop: Computable }
1313
; CHECK-NEXT: Determining loop execution counts for: @test_1_non_negative
1414
; CHECK-NEXT: Loop %loop: backedge-taken count is (-1 + (1 smax %n))<nsw>
15-
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is 2147483646
15+
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is i32 2147483646
1616
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is (-1 + (1 smax %n))<nsw>
1717
; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is (-1 + (1 smax %n))<nsw>
1818
; CHECK-NEXT: Predicates:
@@ -51,7 +51,7 @@ define i32 @test_2_non_positive(i32 %n) {
5151
; CHECK-NEXT: --> {1,+,1}<nuw><nsw><%loop> U: [1,-2147483648) S: [1,-2147483648) Exits: (1 smax %n) LoopDispositions: { %loop: Computable }
5252
; CHECK-NEXT: Determining loop execution counts for: @test_2_non_positive
5353
; CHECK-NEXT: Loop %loop: backedge-taken count is (-1 + (1 smax %n))<nsw>
54-
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is 2147483646
54+
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is i32 2147483646
5555
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is (-1 + (1 smax %n))<nsw>
5656
; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is (-1 + (1 smax %n))<nsw>
5757
; CHECK-NEXT: Predicates:

llvm/test/Analysis/ScalarEvolution/alloca.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ define void @alloca_icmp_null_exit_count() {
4444
; CHECK-NEXT: --> (%cmp2 umin %cmp1) U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Variant }
4545
; CHECK-NEXT: Determining loop execution counts for: @alloca_icmp_null_exit_count
4646
; CHECK-NEXT: Loop %loop: backedge-taken count is 2
47-
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is 2
47+
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is i64 2
4848
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is 2
4949
; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is 2
5050
; CHECK-NEXT: Predicates:

llvm/test/Analysis/ScalarEvolution/backedge-taken-count-guard-info.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ define void @loop_guard_improves_exact_backedge_taken_count_1(i32 %conv) {
1414
; CHECK-NEXT: --> {1,+,1}<nuw><nsw><%loop> U: [1,2) S: [1,2) Exits: 1 LoopDispositions: { %loop: Computable }
1515
; CHECK-NEXT: Determining loop execution counts for: @loop_guard_improves_exact_backedge_taken_count_1
1616
; CHECK-NEXT: Loop %loop: backedge-taken count is 0
17-
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is 0
17+
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is i64 0
1818
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is 0
1919
; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is 0
2020
; CHECK-NEXT: Predicates:
@@ -50,7 +50,7 @@ define void @loop_guard_improves_exact_backedge_taken_count_2(i32 %conv) {
5050
; CHECK-NEXT: --> {1,+,1}<nuw><nsw><%loop> U: [1,3) S: [1,3) Exits: (1 + (zext i1 (trunc i32 %conv to i1) to i64))<nuw><nsw> LoopDispositions: { %loop: Computable }
5151
; CHECK-NEXT: Determining loop execution counts for: @loop_guard_improves_exact_backedge_taken_count_2
5252
; CHECK-NEXT: Loop %loop: backedge-taken count is (zext i1 (trunc i32 %conv to i1) to i64)
53-
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is 1
53+
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is i64 1
5454
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is (zext i1 (trunc i32 %conv to i1) to i64)
5555
; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is (zext i1 (trunc i32 %conv to i1) to i64)
5656
; CHECK-NEXT: Predicates:

llvm/test/Analysis/ScalarEvolution/becount-invalidation.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ define void @test(ptr %arg) {
3030
; CHECK-NEXT: Loop %loop2.header: <multiple exits> Unpredictable backedge-taken count.
3131
; CHECK-NEXT: exit count for loop2.header: ***COULDNOTCOMPUTE***
3232
; CHECK-NEXT: exit count for loop2.latch: false
33-
; CHECK-NEXT: Loop %loop2.header: constant max backedge-taken count is false
33+
; CHECK-NEXT: Loop %loop2.header: constant max backedge-taken count is i1 false
3434
; CHECK-NEXT: Loop %loop2.header: symbolic max backedge-taken count is false
3535
; CHECK-NEXT: symbolic max exit count for loop2.header: ***COULDNOTCOMPUTE***
3636
; CHECK-NEXT: symbolic max exit count for loop2.latch: false

llvm/test/Analysis/ScalarEvolution/decrementing_addrecs.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ define i32 @test_step_1_flags(i32 %n) {
4747
; DEFAULT-NEXT: --> {(-2 + %n),+,-1}<nw><%loop> U: full-set S: full-set Exits: -1 LoopDispositions: { %loop: Computable }
4848
; DEFAULT-NEXT: Determining loop execution counts for: @test_step_1_flags
4949
; DEFAULT-NEXT: Loop %loop: backedge-taken count is (-1 + %n)
50-
; DEFAULT-NEXT: Loop %loop: constant max backedge-taken count is 2147483646
50+
; DEFAULT-NEXT: Loop %loop: constant max backedge-taken count is i32 2147483646
5151
; DEFAULT-NEXT: Loop %loop: symbolic max backedge-taken count is (-1 + %n)
5252
; DEFAULT-NEXT: Loop %loop: Predicated backedge-taken count is (-1 + %n)
5353
; DEFAULT-NEXT: Predicates:
@@ -73,7 +73,7 @@ define i32 @test_step_1_flags(i32 %n) {
7373
; EXPENSIVE_SHARPENING-NEXT: --> {(-2 + %n),+,-1}<nsw><%loop> U: full-set S: [-1,2147483646) Exits: -1 LoopDispositions: { %loop: Computable }
7474
; EXPENSIVE_SHARPENING-NEXT: Determining loop execution counts for: @test_step_1_flags
7575
; EXPENSIVE_SHARPENING-NEXT: Loop %loop: backedge-taken count is (-1 + %n)
76-
; EXPENSIVE_SHARPENING-NEXT: Loop %loop: constant max backedge-taken count is 2147483646
76+
; EXPENSIVE_SHARPENING-NEXT: Loop %loop: constant max backedge-taken count is i32 2147483646
7777
; EXPENSIVE_SHARPENING-NEXT: Loop %loop: symbolic max backedge-taken count is (-1 + %n)
7878
; EXPENSIVE_SHARPENING-NEXT: Loop %loop: Predicated backedge-taken count is (-1 + %n)
7979
; EXPENSIVE_SHARPENING-NEXT: Predicates:

llvm/test/Analysis/ScalarEvolution/exact-exit-count-more-precise.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ define void @test_and(i16 %in) {
1414
; CHECK-NEXT: --> (%_tmp10.i umin %exitcond.i) U: full-set S: full-set Exits: true LoopDispositions: { %bb1.i: Variant, %bb2: Variant }
1515
; CHECK-NEXT: Determining loop execution counts for: @test_and
1616
; CHECK-NEXT: Loop %bb1.i: backedge-taken count is (1 + (-1 * %in))
17-
; CHECK-NEXT: Loop %bb1.i: constant max backedge-taken count is -1
17+
; CHECK-NEXT: Loop %bb1.i: constant max backedge-taken count is i16 -1
1818
; CHECK-NEXT: Loop %bb1.i: symbolic max backedge-taken count is (1 + (-1 * %in))
1919
; CHECK-NEXT: Loop %bb1.i: Predicated backedge-taken count is (1 + (-1 * %in))
2020
; CHECK-NEXT: Predicates:
@@ -56,7 +56,7 @@ define void @test_or() {
5656
; CHECK-NEXT: --> (%C11 umax %C5) U: full-set S: full-set Exits: false LoopDispositions: { %BB: Variant }
5757
; CHECK-NEXT: Determining loop execution counts for: @test_or
5858
; CHECK-NEXT: Loop %BB: backedge-taken count is undef
59-
; CHECK-NEXT: Loop %BB: constant max backedge-taken count is -1
59+
; CHECK-NEXT: Loop %BB: constant max backedge-taken count is i32 -1
6060
; CHECK-NEXT: Loop %BB: symbolic max backedge-taken count is undef
6161
; CHECK-NEXT: Loop %BB: Predicated backedge-taken count is undef
6262
; CHECK-NEXT: Predicates:

llvm/test/Analysis/ScalarEvolution/exhaustive-trip-counts.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ define void @f_0() {
99
; CHECK-LABEL: 'f_0'
1010
; CHECK-NEXT: Determining loop execution counts for: @f_0
1111
; CHECK-NEXT: Loop %for.body: backedge-taken count is 5
12-
; CHECK-NEXT: Loop %for.body: constant max backedge-taken count is 5
12+
; CHECK-NEXT: Loop %for.body: constant max backedge-taken count is i32 5
1313
; CHECK-NEXT: Loop %for.body: symbolic max backedge-taken count is 5
1414
; CHECK-NEXT: Loop %for.body: Predicated backedge-taken count is 5
1515
; CHECK-NEXT: Predicates:

0 commit comments

Comments
 (0)