Index: test/Verifier/musttail-valid.ll =================================================================== --- test/Verifier/musttail-valid.ll +++ test/Verifier/musttail-valid.ll @@ -14,3 +14,21 @@ %w = bitcast i8* %v to i32* ret i32* %w } + +declare x86_thiscallcc void @varargs_thiscall(i8*, ...) +define x86_thiscallcc void @varargs_thiscall_thunk(i8* %this, ...) { + musttail call x86_thiscallcc void (i8*, ...)* @varargs_thiscall(i8* %this, ...) + ret void +} + +declare x86_fastcallcc void @varargs_fastcall(i8*, ...) +define x86_fastcallcc void @varargs_fastcall_thunk(i8* %this, ...) { + musttail call x86_fastcallcc void (i8*, ...)* @varargs_fastcall(i8* %this, ...) + ret void +} + +; The verifier checks shouldn't be looking for musttail in the function. The +; function might just abort. Doing a normal return is just UB. +define x86_thiscallcc void @varargs_thiscall_unreachable(i8* %this, ...) { + unreachable +}