[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / Transforms / DFAJumpThreading / dfa-constant-propagation.ll
blob78e5615c5d2d1f795ad5aef3349ebfbd271a51c5
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt -S -dfa-jump-threading -sccp -simplifycfg %s | FileCheck %s
4 ; This test checks that a constant propagation is applied for a basic loop.
5 ; Related to bug 44679.
6 define i32 @test(i32 %a) {
7 ; CHECK-LABEL: @test(
8 ; CHECK-NEXT:  entry:
9 ; CHECK-NEXT:    ret i32 3
11 entry:
12   br label %while.cond
14 while.cond:
15   %num = phi i32 [ 0, %entry ], [ %add, %case1 ]
16   %state = phi i32 [ 1, %entry ], [ %state.next, %case1 ]
17   switch i32 %state, label %end [
18   i32 1, label %case1
19   i32 2, label %case2
20   ]
22 case1:
23   %state.next = phi i32 [ 3, %case2 ], [ 2, %while.cond ]
24   %add = add nsw i32 %num, %state
25   br label %while.cond
27 case2:
28   br label %case1
30 end:
31   ret i32 %num