[SCEV] Fix misplaced \n in printout of max symbolic exit counts

This commit is contained in:
Max Kazantsev 2022-11-25 11:40:54 +07:00
parent fa71c16455
commit 4496d553bd
13 changed files with 83 additions and 56 deletions

View File

@ -13391,6 +13391,7 @@ static void PrintLoopInfo(raw_ostream &OS, ScalarEvolution *SE,
OS << "Unpredictable symbolic max backedge-taken count. ";
}
OS << "\n";
if (ExitingBlocks.size() > 1)
for (BasicBlock *ExitingBlock : ExitingBlocks) {
OS << " symbolic max exit count for " << ExitingBlock->getName() << ": "
@ -13398,8 +13399,7 @@ static void PrintLoopInfo(raw_ostream &OS, ScalarEvolution *SE,
<< "\n";
}
OS << "\n"
"Loop ";
OS << "Loop ";
L->getHeader()->printAsOperand(OS, /*PrintType=*/false);
OS << ": ";

View File

@ -31,9 +31,10 @@ define void @test(i64* %arg) {
; CHECK-NEXT: exit count for loop2.header: ***COULDNOTCOMPUTE***
; CHECK-NEXT: exit count for loop2.latch: false
; CHECK-NEXT: Loop %loop2.header: constant max backedge-taken count is false
; CHECK-NEXT: Loop %loop2.header: symbolic max backedge-taken count is false symbolic max exit count for loop2.header: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %loop2.header: symbolic max backedge-taken count is false
; CHECK-NEXT: symbolic max exit count for loop2.header: ***COULDNOTCOMPUTE***
; CHECK-NEXT: symbolic max exit count for loop2.latch: false
; CHECK: Loop %loop2.header: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %loop2.header: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %loop.header: Unpredictable backedge-taken count.
; CHECK-NEXT: Loop %loop.header: Unpredictable constant max backedge-taken count.
; CHECK-NEXT: Loop %loop.header: Unpredictable symbolic max backedge-taken count.

View File

@ -553,9 +553,10 @@ define void @test-add-not-header3(float* %input, i32 %offset, i32 %numIterations
; CHECK-NEXT: exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: exit count for loop2: (-1 + %numIterations)
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is -1
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is (-1 + %numIterations) symbolic max exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is (-1 + %numIterations)
; CHECK-NEXT: symbolic max exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: symbolic max exit count for loop2: (-1 + %numIterations)
; CHECK: Loop %loop: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %loop: Unpredictable predicated backedge-taken count.
;
i1* %cond_buf) {
entry:
@ -1500,9 +1501,10 @@ define void @test-sext-sub(float* %input, i32 %sub, i32 %numIterations) {
; CHECK-NEXT: exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: exit count for cont: (-1 + %numIterations)
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is -1
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is (-1 + %numIterations) symbolic max exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is (-1 + %numIterations)
; CHECK-NEXT: symbolic max exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: symbolic max exit count for cont: (-1 + %numIterations)
; CHECK: Loop %loop: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %loop: Unpredictable predicated backedge-taken count.
;
entry:
br label %loop
@ -1620,9 +1622,10 @@ define i32 @pr28932() {
; CHECK-NEXT: exit count for if.then: ***COULDNOTCOMPUTE***
; CHECK-NEXT: exit count for if.else: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %for.cond: Unpredictable constant max backedge-taken count.
; CHECK-NEXT: Loop %for.cond: Unpredictable symbolic max backedge-taken count. symbolic max exit count for if.then: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %for.cond: Unpredictable symbolic max backedge-taken count.
; CHECK-NEXT: symbolic max exit count for if.then: ***COULDNOTCOMPUTE***
; CHECK-NEXT: symbolic max exit count for if.else: ***COULDNOTCOMPUTE***
; CHECK: Loop %for.cond: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %for.cond: Unpredictable predicated backedge-taken count.
;
entry:
%pre = load %struct.anon*, %struct.anon** @a, align 8

View File

@ -61,25 +61,28 @@ define dso_local i32 @f() {
; CHECK-NEXT: exit count for for.cond6: 0
; CHECK-NEXT: exit count for for.end: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %for.cond6: constant max backedge-taken count is 0
; CHECK-NEXT: Loop %for.cond6: symbolic max backedge-taken count is 0 symbolic max exit count for for.cond6: 0
; CHECK-NEXT: Loop %for.cond6: symbolic max backedge-taken count is 0
; CHECK-NEXT: symbolic max exit count for for.cond6: 0
; CHECK-NEXT: symbolic max exit count for for.end: ***COULDNOTCOMPUTE***
; CHECK: Loop %for.cond6: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %for.cond6: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %inner.loop: <multiple exits> Unpredictable backedge-taken count.
; CHECK-NEXT: exit count for inner.loop: 0
; CHECK-NEXT: exit count for for.end.3: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %inner.loop: constant max backedge-taken count is 0
; CHECK-NEXT: Loop %inner.loop: symbolic max backedge-taken count is 0 symbolic max exit count for inner.loop: 0
; CHECK-NEXT: Loop %inner.loop: symbolic max backedge-taken count is 0
; CHECK-NEXT: symbolic max exit count for inner.loop: 0
; CHECK-NEXT: symbolic max exit count for for.end.3: ***COULDNOTCOMPUTE***
; CHECK: Loop %inner.loop: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %inner.loop: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %outer.loop: <multiple exits> Unpredictable backedge-taken count.
; CHECK-NEXT: exit count for for.cond6: ***COULDNOTCOMPUTE***
; CHECK-NEXT: exit count for inner.loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: exit count for for.inc13.3: 2
; CHECK-NEXT: Loop %outer.loop: constant max backedge-taken count is 2
; CHECK-NEXT: Loop %outer.loop: symbolic max backedge-taken count is 2 symbolic max exit count for for.cond6: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %outer.loop: symbolic max backedge-taken count is 2
; CHECK-NEXT: symbolic max exit count for for.cond6: ***COULDNOTCOMPUTE***
; CHECK-NEXT: symbolic max exit count for inner.loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: symbolic max exit count for for.inc13.3: 2
; CHECK: Loop %outer.loop: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %outer.loop: Unpredictable predicated backedge-taken count.
;
entry:
store i32 3, i32* @a, align 4

View File

@ -223,9 +223,10 @@ define void @test_other_exit(i32 %N) mustprogress {
; CHECK-NEXT: exit count for for.body: 9
; CHECK-NEXT: exit count for for.latch: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %for.body: constant max backedge-taken count is 9
; CHECK-NEXT: Loop %for.body: symbolic max backedge-taken count is 9 symbolic max exit count for for.body: 9
; CHECK-NEXT: Loop %for.body: symbolic max backedge-taken count is 9
; CHECK-NEXT: symbolic max exit count for for.body: 9
; CHECK-NEXT: symbolic max exit count for for.latch: ***COULDNOTCOMPUTE***
; CHECK: Loop %for.body: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %for.body: Unpredictable predicated backedge-taken count.
;
entry:
br label %for.body

View File

@ -27,9 +27,10 @@ define i32 @test_01(i32 %start, i32* %p, i32* %q) {
; CHECK-NEXT: exit count for loop: (zext i32 %start to i64)
; CHECK-NEXT: exit count for backedge: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is 4294967295
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is (zext i32 %start to i64) symbolic max exit count for loop: (zext i32 %start to i64)
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is (zext i32 %start to i64)
; CHECK-NEXT: symbolic max exit count for loop: (zext i32 %start to i64)
; CHECK-NEXT: symbolic max exit count for backedge: ***COULDNOTCOMPUTE***
; CHECK: Loop %loop: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %loop: Unpredictable predicated backedge-taken count.
;
entry:
%0 = zext i32 %start to i64

View File

@ -21,16 +21,18 @@ define i32 @test_01(i32 %a, i32 %b) {
; CHECK-NEXT: exit count for inner: %b
; CHECK-NEXT: exit count for inner.backedge: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %inner: constant max backedge-taken count is 2147483647
; CHECK-NEXT: Loop %inner: symbolic max backedge-taken count is %b symbolic max exit count for inner: %b
; CHECK-NEXT: Loop %inner: symbolic max backedge-taken count is %b
; CHECK-NEXT: symbolic max exit count for inner: %b
; CHECK-NEXT: symbolic max exit count for inner.backedge: ***COULDNOTCOMPUTE***
; CHECK: Loop %inner: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %inner: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %outer: <multiple exits> Unpredictable backedge-taken count.
; CHECK-NEXT: exit count for inner: ***COULDNOTCOMPUTE***
; CHECK-NEXT: exit count for outer.backedge: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %outer: Unpredictable constant max backedge-taken count.
; CHECK-NEXT: Loop %outer: Unpredictable symbolic max backedge-taken count. symbolic max exit count for inner: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %outer: Unpredictable symbolic max backedge-taken count.
; CHECK-NEXT: symbolic max exit count for inner: ***COULDNOTCOMPUTE***
; CHECK-NEXT: symbolic max exit count for outer.backedge: ***COULDNOTCOMPUTE***
; CHECK: Loop %outer: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %outer: Unpredictable predicated backedge-taken count.
;
entry:
%b_is_non_negative = icmp sge i32 %b, 0
@ -83,16 +85,18 @@ define i32 @test_02(i32 %a, i32 %b) {
; CHECK-NEXT: exit count for inner: ((-1 * %outer.iv) + (%b smax %outer.iv))
; CHECK-NEXT: exit count for inner.backedge: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %inner: constant max backedge-taken count is -1
; CHECK-NEXT: Loop %inner: symbolic max backedge-taken count is ((-1 * %outer.iv) + (%b smax %outer.iv)) symbolic max exit count for inner: ((-1 * %outer.iv) + (%b smax %outer.iv))
; CHECK-NEXT: Loop %inner: symbolic max backedge-taken count is ((-1 * %outer.iv) + (%b smax %outer.iv))
; CHECK-NEXT: symbolic max exit count for inner: ((-1 * %outer.iv) + (%b smax %outer.iv))
; CHECK-NEXT: symbolic max exit count for inner.backedge: ***COULDNOTCOMPUTE***
; CHECK: Loop %inner: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %inner: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %outer: <multiple exits> Unpredictable backedge-taken count.
; CHECK-NEXT: exit count for inner: ***COULDNOTCOMPUTE***
; CHECK-NEXT: exit count for outer.backedge: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %outer: Unpredictable constant max backedge-taken count.
; CHECK-NEXT: Loop %outer: Unpredictable symbolic max backedge-taken count. symbolic max exit count for inner: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %outer: Unpredictable symbolic max backedge-taken count.
; CHECK-NEXT: symbolic max exit count for inner: ***COULDNOTCOMPUTE***
; CHECK-NEXT: symbolic max exit count for outer.backedge: ***COULDNOTCOMPUTE***
; CHECK: Loop %outer: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %outer: Unpredictable predicated backedge-taken count.
;
entry:
%b_is_non_negative = icmp sge i32 %b, 0

View File

@ -386,9 +386,10 @@ define void @sadd_symbolic_non_latch(i16 %start) {
; CHECK-NEXT: exit count for for.body: (32767 + (-1 * %start))
; CHECK-NEXT: exit count for for.latch: (230 + (-1 * %start))
; CHECK-NEXT: Loop %for.body: constant max backedge-taken count is -1
; CHECK-NEXT: Loop %for.body: symbolic max backedge-taken count is ((230 + (-1 * %start)) umin (32767 + (-1 * %start))) symbolic max exit count for for.body: (32767 + (-1 * %start))
; CHECK-NEXT: Loop %for.body: symbolic max backedge-taken count is ((230 + (-1 * %start)) umin (32767 + (-1 * %start)))
; CHECK-NEXT: symbolic max exit count for for.body: (32767 + (-1 * %start))
; CHECK-NEXT: symbolic max exit count for for.latch: (230 + (-1 * %start))
; CHECK: Loop %for.body: Predicated backedge-taken count is ((230 + (-1 * %start)) umin (32767 + (-1 * %start)))
; CHECK-NEXT: Loop %for.body: Predicated backedge-taken count is ((230 + (-1 * %start)) umin (32767 + (-1 * %start)))
; CHECK-NEXT: Predicates:
; CHECK: Loop %for.body: Trip multiple is 1
;

View File

@ -25,9 +25,10 @@ define void @test_and(i1 %boolcond) {
; CHECK-NEXT: exit count for loop: 2
; CHECK-NEXT: exit count for backedge: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is 2
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is 2 symbolic max exit count for loop: 2
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is 2
; CHECK-NEXT: symbolic max exit count for loop: 2
; CHECK-NEXT: symbolic max exit count for backedge: ***COULDNOTCOMPUTE***
; CHECK: Loop %loop: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %loop: Unpredictable predicated backedge-taken count.
;
entry:
%conv = zext i1 %boolcond to i32
@ -74,9 +75,10 @@ define void @test_or(i1 %boolcond) {
; CHECK-NEXT: exit count for loop: 2
; CHECK-NEXT: exit count for backedge: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is 2
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is 2 symbolic max exit count for loop: 2
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is 2
; CHECK-NEXT: symbolic max exit count for loop: 2
; CHECK-NEXT: symbolic max exit count for backedge: ***COULDNOTCOMPUTE***
; CHECK: Loop %loop: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %loop: Unpredictable predicated backedge-taken count.
;
entry:
%conv = zext i1 %boolcond to i32

View File

@ -565,9 +565,10 @@ define void @ptrtoint_of_integer(i8* %arg, i64 %arg1, i1 %arg2) local_unnamed_ad
; X64-NEXT: exit count for bb8: ***COULDNOTCOMPUTE***
; X64-NEXT: exit count for bb10: (-2 + (-1 * %arg1) + (ptrtoint i8* %arg to i64))
; X64-NEXT: Loop %bb8: constant max backedge-taken count is -1
; X64-NEXT: Loop %bb8: symbolic max backedge-taken count is (-2 + (-1 * %arg1) + (ptrtoint i8* %arg to i64)) symbolic max exit count for bb8: ***COULDNOTCOMPUTE***
; X64-NEXT: Loop %bb8: symbolic max backedge-taken count is (-2 + (-1 * %arg1) + (ptrtoint i8* %arg to i64))
; X64-NEXT: symbolic max exit count for bb8: ***COULDNOTCOMPUTE***
; X64-NEXT: symbolic max exit count for bb10: (-2 + (-1 * %arg1) + (ptrtoint i8* %arg to i64))
; X64: Loop %bb8: Unpredictable predicated backedge-taken count.
; X64-NEXT: Loop %bb8: Unpredictable predicated backedge-taken count.
;
; X32-LABEL: 'ptrtoint_of_integer'
; X32-NEXT: Classifying expressions for: @ptrtoint_of_integer
@ -584,9 +585,10 @@ define void @ptrtoint_of_integer(i8* %arg, i64 %arg1, i1 %arg2) local_unnamed_ad
; X32-NEXT: exit count for bb8: ***COULDNOTCOMPUTE***
; X32-NEXT: exit count for bb10: (-2 + (zext i32 (ptrtoint i8* %arg to i32) to i64) + (-1 * %arg1))
; X32-NEXT: Loop %bb8: constant max backedge-taken count is -1
; X32-NEXT: Loop %bb8: symbolic max backedge-taken count is (-2 + (zext i32 (ptrtoint i8* %arg to i32) to i64) + (-1 * %arg1)) symbolic max exit count for bb8: ***COULDNOTCOMPUTE***
; X32-NEXT: Loop %bb8: symbolic max backedge-taken count is (-2 + (zext i32 (ptrtoint i8* %arg to i32) to i64) + (-1 * %arg1))
; X32-NEXT: symbolic max exit count for bb8: ***COULDNOTCOMPUTE***
; X32-NEXT: symbolic max exit count for bb10: (-2 + (zext i32 (ptrtoint i8* %arg to i32) to i64) + (-1 * %arg1))
; X32: Loop %bb8: Unpredictable predicated backedge-taken count.
; X32-NEXT: Loop %bb8: Unpredictable predicated backedge-taken count.
;
bb:
%i = icmp eq i8* %arg, null

View File

@ -16,9 +16,10 @@ define void @test_preinc_ult(i64 %len) {
; CHECK-NEXT: exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: exit count for latch: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %loop: Unpredictable constant max backedge-taken count.
; CHECK-NEXT: Loop %loop: Unpredictable symbolic max backedge-taken count. symbolic max exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %loop: Unpredictable symbolic max backedge-taken count.
; CHECK-NEXT: symbolic max exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: symbolic max exit count for latch: ***COULDNOTCOMPUTE***
; CHECK: Loop %loop: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %loop: Unpredictable predicated backedge-taken count.
;
start:
br label %loop
@ -51,9 +52,10 @@ define void @test_postinc_ult(i64 %len) {
; CHECK-NEXT: exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: exit count for latch: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %loop: Unpredictable constant max backedge-taken count.
; CHECK-NEXT: Loop %loop: Unpredictable symbolic max backedge-taken count. symbolic max exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %loop: Unpredictable symbolic max backedge-taken count.
; CHECK-NEXT: symbolic max exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: symbolic max exit count for latch: ***COULDNOTCOMPUTE***
; CHECK: Loop %loop: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %loop: Unpredictable predicated backedge-taken count.
;
start:
br label %loop
@ -85,9 +87,10 @@ define void @test_preinc_slt(i64 %len) {
; CHECK-NEXT: exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: exit count for latch: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %loop: Unpredictable constant max backedge-taken count.
; CHECK-NEXT: Loop %loop: Unpredictable symbolic max backedge-taken count. symbolic max exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %loop: Unpredictable symbolic max backedge-taken count.
; CHECK-NEXT: symbolic max exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: symbolic max exit count for latch: ***COULDNOTCOMPUTE***
; CHECK: Loop %loop: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %loop: Unpredictable predicated backedge-taken count.
;
start:
br label %loop
@ -120,9 +123,10 @@ define void @test_postinc_slt(i64 %len) {
; CHECK-NEXT: exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: exit count for latch: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %loop: Unpredictable constant max backedge-taken count.
; CHECK-NEXT: Loop %loop: Unpredictable symbolic max backedge-taken count. symbolic max exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %loop: Unpredictable symbolic max backedge-taken count.
; CHECK-NEXT: symbolic max exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: symbolic max exit count for latch: ***COULDNOTCOMPUTE***
; CHECK: Loop %loop: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %loop: Unpredictable predicated backedge-taken count.
;
start:
br label %loop
@ -154,9 +158,10 @@ define void @test_preinc_sgt(i64 %lim) {
; CHECK-NEXT: exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: exit count for latch: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %loop: Unpredictable constant max backedge-taken count.
; CHECK-NEXT: Loop %loop: Unpredictable symbolic max backedge-taken count. symbolic max exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %loop: Unpredictable symbolic max backedge-taken count.
; CHECK-NEXT: symbolic max exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: symbolic max exit count for latch: ***COULDNOTCOMPUTE***
; CHECK: Loop %loop: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %loop: Unpredictable predicated backedge-taken count.
;
start:
br label %loop
@ -189,9 +194,10 @@ define void @test_postinc_sgt(i64 %lim) {
; CHECK-NEXT: exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: exit count for latch: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %loop: Unpredictable constant max backedge-taken count.
; CHECK-NEXT: Loop %loop: Unpredictable symbolic max backedge-taken count. symbolic max exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %loop: Unpredictable symbolic max backedge-taken count.
; CHECK-NEXT: symbolic max exit count for loop: ***COULDNOTCOMPUTE***
; CHECK-NEXT: symbolic max exit count for latch: ***COULDNOTCOMPUTE***
; CHECK: Loop %loop: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %loop: Unpredictable predicated backedge-taken count.
;
start:
br label %loop

View File

@ -86,9 +86,10 @@ define void @s32_max2_unpredictable_exit(i32 %n, i32 %x, i32* %p) {
; CHECK-NEXT: exit count for do.body: ((-1 * %n) + %x)
; CHECK-NEXT: exit count for if.end: ((-1 * %n) + ((2 + %n) smax %n))
; CHECK-NEXT: Loop %do.body: constant max backedge-taken count is 2
; CHECK-NEXT: Loop %do.body: symbolic max backedge-taken count is (((-1 * %n) + ((2 + %n) smax %n)) umin ((-1 * %n) + %x)) symbolic max exit count for do.body: ((-1 * %n) + %x)
; CHECK-NEXT: Loop %do.body: symbolic max backedge-taken count is (((-1 * %n) + ((2 + %n) smax %n)) umin ((-1 * %n) + %x))
; CHECK-NEXT: symbolic max exit count for do.body: ((-1 * %n) + %x)
; CHECK-NEXT: symbolic max exit count for if.end: ((-1 * %n) + ((2 + %n) smax %n))
; CHECK: Loop %do.body: Predicated backedge-taken count is (((-1 * %n) + ((2 + %n) smax %n)) umin ((-1 * %n) + %x))
; CHECK-NEXT: Loop %do.body: Predicated backedge-taken count is (((-1 * %n) + ((2 + %n) smax %n)) umin ((-1 * %n) + %x))
; CHECK-NEXT: Predicates:
; CHECK: Loop %do.body: Trip multiple is 1
;
@ -197,9 +198,10 @@ define void @u32_max2_unpredictable_exit(i32 %n, i32 %x, i32* %p) {
; CHECK-NEXT: exit count for do.body: ((-1 * %n) + %x)
; CHECK-NEXT: exit count for if.end: ((-1 * %n) + ((2 + %n) umax %n))
; CHECK-NEXT: Loop %do.body: constant max backedge-taken count is 2
; CHECK-NEXT: Loop %do.body: symbolic max backedge-taken count is (((-1 * %n) + ((2 + %n) umax %n)) umin ((-1 * %n) + %x)) symbolic max exit count for do.body: ((-1 * %n) + %x)
; CHECK-NEXT: Loop %do.body: symbolic max backedge-taken count is (((-1 * %n) + ((2 + %n) umax %n)) umin ((-1 * %n) + %x))
; CHECK-NEXT: symbolic max exit count for do.body: ((-1 * %n) + %x)
; CHECK-NEXT: symbolic max exit count for if.end: ((-1 * %n) + ((2 + %n) umax %n))
; CHECK: Loop %do.body: Predicated backedge-taken count is (((-1 * %n) + ((2 + %n) umax %n)) umin ((-1 * %n) + %x))
; CHECK-NEXT: Loop %do.body: Predicated backedge-taken count is (((-1 * %n) + ((2 + %n) umax %n)) umin ((-1 * %n) + %x))
; CHECK-NEXT: Predicates:
; CHECK: Loop %do.body: Trip multiple is 1
;

View File

@ -10,9 +10,10 @@ define i8 @f() {
; CHECK-NEXT: exit count for bb: ***COULDNOTCOMPUTE***
; CHECK-NEXT: exit count for bb2: 1
; CHECK-NEXT: Loop %bb: constant max backedge-taken count is 1
; CHECK-NEXT: Loop %bb: symbolic max backedge-taken count is 1 symbolic max exit count for bb: ***COULDNOTCOMPUTE***
; CHECK-NEXT: Loop %bb: symbolic max backedge-taken count is 1
; CHECK-NEXT: symbolic max exit count for bb: ***COULDNOTCOMPUTE***
; CHECK-NEXT: symbolic max exit count for bb2: 1
; CHECK: Loop %bb: Unpredictable predicated backedge-taken count.
; CHECK-NEXT: Loop %bb: Unpredictable predicated backedge-taken count.
;
entry:
tail call i32 @fegetround( ) ; <i32>:0 [#uses=1]