1*fc0fa851SSjoerd Meijer; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2*fc0fa851SSjoerd Meijer; RUN: opt -function-specialization -force-function-specialization -S < %s | FileCheck %s
3*fc0fa851SSjoerd Meijer
4*fc0fa851SSjoerd Meijerdefine i32 @main() {
5*fc0fa851SSjoerd Meijer; CHECK-LABEL: @main(
6*fc0fa851SSjoerd Meijer; CHECK-NEXT:  bb:
7*fc0fa851SSjoerd Meijer; CHECK-NEXT:    tail call void @wombat.1(i8* undef, i64 undef, i64 undef, i32 (i8*, i8*)* bitcast (i32 ()* @quux to i32 (i8*, i8*)*))
8*fc0fa851SSjoerd Meijer; CHECK-NEXT:    tail call void @wombat.2(i8* undef, i64 undef, i64 undef, i32 (i8*, i8*)* bitcast (i32 ()* @eggs to i32 (i8*, i8*)*))
9*fc0fa851SSjoerd Meijer; CHECK-NEXT:    ret i32 undef
10*fc0fa851SSjoerd Meijer;
11*fc0fa851SSjoerd Meijerbb:
12*fc0fa851SSjoerd Meijer  tail call void @wombat(i8* undef, i64 undef, i64 undef, i32 (i8*, i8*)* bitcast (i32 ()* @quux to i32 (i8*, i8*)*))
13*fc0fa851SSjoerd Meijer  tail call void @wombat(i8* undef, i64 undef, i64 undef, i32 (i8*, i8*)* bitcast (i32 ()* @eggs to i32 (i8*, i8*)*))
14*fc0fa851SSjoerd Meijer  ret i32 undef
15*fc0fa851SSjoerd Meijer}
16*fc0fa851SSjoerd Meijer
17*fc0fa851SSjoerd Meijerdeclare i32 @quux()
18*fc0fa851SSjoerd Meijerdeclare i32 @eggs()
19*fc0fa851SSjoerd Meijer
20*fc0fa851SSjoerd Meijerdefine internal void @wombat(i8* %arg, i64 %arg1, i64 %arg2, i32 (i8*, i8*)* %arg3) {
21*fc0fa851SSjoerd Meijerbb4:
22*fc0fa851SSjoerd Meijer  %tmp = tail call i32 %arg3(i8* undef, i8* undef)
23*fc0fa851SSjoerd Meijer  ret void
24*fc0fa851SSjoerd Meijer}
25