forked from OSchip/llvm-project
33 lines
750 B
LLVM
33 lines
750 B
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
|
; RUN: opt -S -dfa-jump-threading -sccp -simplifycfg %s | FileCheck %s
|
|
|
|
; This test checks that a constant propagation is applied for a basic loop.
|
|
; Related to bug 44679.
|
|
define i32 @test(i32 %a) {
|
|
; CHECK-LABEL: @test(
|
|
; CHECK-NEXT: entry:
|
|
; CHECK-NEXT: ret i32 3
|
|
;
|
|
entry:
|
|
br label %while.cond
|
|
|
|
while.cond:
|
|
%num = phi i32 [ 0, %entry ], [ %add, %case1 ]
|
|
%state = phi i32 [ 1, %entry ], [ %state.next, %case1 ]
|
|
switch i32 %state, label %end [
|
|
i32 1, label %case1
|
|
i32 2, label %case2
|
|
]
|
|
|
|
case1:
|
|
%state.next = phi i32 [ 3, %case2 ], [ 2, %while.cond ]
|
|
%add = add nsw i32 %num, %state
|
|
br label %while.cond
|
|
|
|
case2:
|
|
br label %case1
|
|
|
|
end:
|
|
ret i32 %num
|
|
}
|