xref: /aosp_15_r20/external/llvm/test/Verifier/musttail-valid.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llvm-as %s -o /dev/null
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker; Should assemble without error.
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Workerdeclare void @similar_param_ptrty_callee(i8*)
6*9880d681SAndroid Build Coastguard Workerdefine void @similar_param_ptrty(i32*) {
7*9880d681SAndroid Build Coastguard Worker  musttail call void @similar_param_ptrty_callee(i8* null)
8*9880d681SAndroid Build Coastguard Worker  ret void
9*9880d681SAndroid Build Coastguard Worker}
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Workerdeclare i8* @similar_ret_ptrty_callee()
12*9880d681SAndroid Build Coastguard Workerdefine i32* @similar_ret_ptrty() {
13*9880d681SAndroid Build Coastguard Worker  %v = musttail call i8* @similar_ret_ptrty_callee()
14*9880d681SAndroid Build Coastguard Worker  %w = bitcast i8* %v to i32*
15*9880d681SAndroid Build Coastguard Worker  ret i32* %w
16*9880d681SAndroid Build Coastguard Worker}
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Workerdeclare x86_thiscallcc void @varargs_thiscall(i8*, ...)
19*9880d681SAndroid Build Coastguard Workerdefine x86_thiscallcc void @varargs_thiscall_thunk(i8* %this, ...) {
20*9880d681SAndroid Build Coastguard Worker  musttail call x86_thiscallcc void (i8*, ...) @varargs_thiscall(i8* %this, ...)
21*9880d681SAndroid Build Coastguard Worker  ret void
22*9880d681SAndroid Build Coastguard Worker}
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Workerdeclare x86_fastcallcc void @varargs_fastcall(i8*, ...)
25*9880d681SAndroid Build Coastguard Workerdefine x86_fastcallcc void @varargs_fastcall_thunk(i8* %this, ...) {
26*9880d681SAndroid Build Coastguard Worker  musttail call x86_fastcallcc void (i8*, ...) @varargs_fastcall(i8* %this, ...)
27*9880d681SAndroid Build Coastguard Worker  ret void
28*9880d681SAndroid Build Coastguard Worker}
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Workerdefine x86_thiscallcc void @varargs_thiscall_unreachable(i8* %this, ...) {
31*9880d681SAndroid Build Coastguard Worker  unreachable
32*9880d681SAndroid Build Coastguard Worker}
33*9880d681SAndroid Build Coastguard Worker
34*9880d681SAndroid Build Coastguard Workerdefine x86_thiscallcc void @varargs_thiscall_ret_unreachable(i8* %this, ...) {
35*9880d681SAndroid Build Coastguard Worker  musttail call x86_thiscallcc void (i8*, ...) @varargs_thiscall(i8* %this, ...)
36*9880d681SAndroid Build Coastguard Worker  ret void
37*9880d681SAndroid Build Coastguard Workerbb1:
38*9880d681SAndroid Build Coastguard Worker  ret void
39*9880d681SAndroid Build Coastguard Worker}
40