[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / Transforms / Inline / inline_prune.ll
blobc4c5c0cf25292fc25bfaa5e6cd24186af6c150e6
1 ; RUN: opt < %s -inline -S | FileCheck %s
2 ; RUN: opt < %s -passes='cgscc(inline)' -S | FileCheck %s
4 define internal i32 @callee1(i32 %A, i32 %B) {
5 ; CHECK-NOT: @callee1
6 entry:
7   %cond = icmp eq i32 %A, 123
8   br i1 %cond, label %T, label %F
11   %C = mul i32 %B, %B
12   ret i32 %C
15   ret i32 0
18 define internal i32 @callee2(i32 %A, i32 %B) {
19 ; CHECK-NOT: @callee2
20 entry:
21   switch i32 %A, label %T [
22            i32 10, label %F
23            i32 1234, label %G
24   ]
26 dead:
27   %cond = icmp eq i32 %A, 123
28   br i1 %cond, label %T, label %F
31   %C = mul i32 %B, %B
32   ret i32 %C
35   ret i32 0
38   %D = mul i32 %B, %B
39   %E = mul i32 %D, %B
40   ret i32 %E
43 define i32 @test(i32 %A) {
44 ; CHECK-LABEL: define i32 @test(i32 %A)
45 entry:
46   %X = call i32 @callee1( i32 10, i32 %A )
47   %Y = call i32 @callee2( i32 10, i32 %A )
48 ; CHECK-NOT: call
49 ; CHECK-NOT: mul
51   %Z = add i32 %X, %Y
52   ret i32 %Z