1*071dbaecSSjoerd Meijer; RUN: opt -function-specialization -S < %s | FileCheck %s 2*071dbaecSSjoerd Meijer 3*071dbaecSSjoerd Meijer; CHECK-NOT: @compute.1 4*071dbaecSSjoerd Meijer; CHECK-NOT: @compute.2 5*071dbaecSSjoerd Meijer 6*071dbaecSSjoerd Meijerdefine i64 @main(i64 %x, i1 %flag) { 7*071dbaecSSjoerd Meijerentry: 8*071dbaecSSjoerd Meijer br i1 %flag, label %plus, label %minus 9*071dbaecSSjoerd Meijer 10*071dbaecSSjoerd Meijerplus: 11*071dbaecSSjoerd Meijer %tmp0 = call i64 @compute(i64 %x, i64 (i64)* @plus) 12*071dbaecSSjoerd Meijer br label %merge 13*071dbaecSSjoerd Meijer 14*071dbaecSSjoerd Meijerminus: 15*071dbaecSSjoerd Meijer %tmp1 = call i64 @compute(i64 %x, i64 (i64)* @minus) 16*071dbaecSSjoerd Meijer br label %merge 17*071dbaecSSjoerd Meijer 18*071dbaecSSjoerd Meijermerge: 19*071dbaecSSjoerd Meijer %tmp2 = phi i64 [ %tmp0, %plus ], [ %tmp1, %minus] 20*071dbaecSSjoerd Meijer ret i64 %tmp2 21*071dbaecSSjoerd Meijer} 22*071dbaecSSjoerd Meijer 23*071dbaecSSjoerd Meijerdefine internal i64 @compute(i64 %x, i64 (i64)* %binop) minsize { 24*071dbaecSSjoerd Meijerentry: 25*071dbaecSSjoerd Meijer %tmp0 = call i64 %binop(i64 %x) 26*071dbaecSSjoerd Meijer ret i64 %tmp0 27*071dbaecSSjoerd Meijer} 28*071dbaecSSjoerd Meijer 29*071dbaecSSjoerd Meijerdefine internal i64 @plus(i64 %x) { 30*071dbaecSSjoerd Meijerentry: 31*071dbaecSSjoerd Meijer %tmp0 = add i64 %x, 1 32*071dbaecSSjoerd Meijer ret i64 %tmp0 33*071dbaecSSjoerd Meijer} 34*071dbaecSSjoerd Meijer 35*071dbaecSSjoerd Meijerdefine internal i64 @minus(i64 %x) { 36*071dbaecSSjoerd Meijerentry: 37*071dbaecSSjoerd Meijer %tmp0 = sub i64 %x, 1 38*071dbaecSSjoerd Meijer ret i64 %tmp0 39*071dbaecSSjoerd Meijer} 40