1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00
llvm-mirror/test/Analysis/ScalarEvolution/exact_iter_count.ll
Max Kazantsev 3dbdfd12d9 Re-enable "[SCEV] Make computeExitLimit more simple and more powerful"
This patch was temporarily reverted because it has exposed bug 37229 on
PowerPC platform. The bug is unrelated to the patch and was just a general
bug in the optimization done for PowerPC platform only. The bug was fixed
by the patch rL331410.

This patch returns the disabled commit since the bug was fixed.

llvm-svn: 331427
2018-05-03 02:37:55 +00:00

62 lines
1.2 KiB
LLVM

; RUN: opt < %s -scalar-evolution -analyze | FileCheck %s
; One side exit dominating the latch, exact backedge taken count is known.
define void @test_01() {
; CHECK-LABEL: Determining loop execution counts for: @test_01
; CHECK-NEXT: Loop %loop: <multiple exits> backedge-taken count is 50
entry:
br label %loop
loop:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %backedge ]
%side.cond = icmp slt i32 %iv, 50
br i1 %side.cond, label %backedge, label %side.exit
backedge:
%iv.next = add i32 %iv, 1
%loop.cond = icmp slt i32 %iv, 100
br i1 %loop.cond, label %loop, label %exit
exit:
ret void
side.exit:
ret void
}
define void @test_02(i1 %c) {
; CHECK-LABEL: Determining loop execution counts for: @test_02
; CHECK-NEXT: Loop %loop: <multiple exits> backedge-taken count is 50
entry:
br label %loop
loop:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %backedge ]
br i1 %c, label %if.true, label %if.false
if.true:
br label %merge
if.false:
br label %merge
merge:
%side.cond = icmp slt i32 %iv, 50
br i1 %side.cond, label %backedge, label %side.exit
backedge:
%iv.next = add i32 %iv, 1
%loop.cond = icmp slt i32 %iv, 100
br i1 %loop.cond, label %loop, label %exit
exit:
ret void
side.exit:
ret void
}