| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py |
| ; RUN: opt -function-specialization -force-function-specialization -S < %s | FileCheck %s |
| |
| define i32 @main() { |
| ; CHECK-LABEL: @main( |
| ; CHECK-NEXT: bb: |
| ; CHECK-NEXT: tail call void @wombat.1(i8* undef, i64 undef, i64 undef, i32 (i8*, i8*)* bitcast (i32 ()* @quux to i32 (i8*, i8*)*)) |
| ; CHECK-NEXT: tail call void @wombat.2(i8* undef, i64 undef, i64 undef, i32 (i8*, i8*)* bitcast (i32 ()* @eggs to i32 (i8*, i8*)*)) |
| ; CHECK-NEXT: ret i32 undef |
| ; |
| bb: |
| tail call void @wombat(i8* undef, i64 undef, i64 undef, i32 (i8*, i8*)* bitcast (i32 ()* @quux to i32 (i8*, i8*)*)) |
| tail call void @wombat(i8* undef, i64 undef, i64 undef, i32 (i8*, i8*)* bitcast (i32 ()* @eggs to i32 (i8*, i8*)*)) |
| ret i32 undef |
| } |
| |
| declare i32 @quux() |
| declare i32 @eggs() |
| |
| define internal void @wombat(i8* %arg, i64 %arg1, i64 %arg2, i32 (i8*, i8*)* %arg3) { |
| ; CHECK-LABEL: @wombat( |
| ; CHECK-NEXT: bb4: |
| ; CHECK-NEXT: [[TMP:%.*]] = tail call i32 [[ARG3:%.*]](i8* undef, i8* undef) |
| ; CHECK-NEXT: ret void |
| ; |
| bb4: |
| %tmp = tail call i32 %arg3(i8* undef, i8* undef) |
| ret void |
| } |