1 ; RUN: opt -function-specialization -deadargelim -inline -S < %s | FileCheck %s
3 ; CHECK-LABEL: @main(i64 %x, i1 %flag) {
5 ; CHECK-NEXT: br i1 %flag, label %plus, label %minus
7 ; CHECK-NEXT: [[TMP0:%.+]] = add i64 %x, 1
8 ; CHECH-NEXT: br label %merge
10 ; CHECK-NEXT: [[TMP1:%.+]] = sub i64 %x, 1
11 ; CHECK-NEXT: br label %merge
13 ; CHECK-NEXT: [[TMP2:%.+]] = phi i64 [ [[TMP0]], %plus ], [ [[TMP1]], %minus ]
14 ; CHECK-NEXT: ret i64 [[TMP2]]
17 define i64 @main(i64 %x, i1 %flag) {
19 br i1 %flag, label %plus, label %minus
22 %tmp0 = call i64 @compute(i64 %x, i64 (i64)* @plus)
26 %tmp1 = call i64 @compute(i64 %x, i64 (i64)* @minus)
30 %tmp2 = phi i64 [ %tmp0, %plus ], [ %tmp1, %minus]
34 define internal i64 @compute(i64 %x, i64 (i64)* %binop) {
36 %tmp0 = call i64 %binop(i64 %x)
40 define internal i64 @plus(i64 %x) {
46 define internal i64 @minus(i64 %x) {