; RUN: llvm-as %s -o /dev/null

; Should assemble without error.

declare void @similar_param_ptrty_callee(i8*)
define void @similar_param_ptrty(i32*) {
  musttail call void @similar_param_ptrty_callee(i8* null)
  ret void
}

declare i8* @similar_ret_ptrty_callee()
define i32* @similar_ret_ptrty() {
  %v = musttail call i8* @similar_ret_ptrty_callee()
  %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
}

define x86_thiscallcc void @varargs_thiscall_unreachable(i8* %this, ...) {
  unreachable
}

define x86_thiscallcc void @varargs_thiscall_ret_unreachable(i8* %this, ...) {
  musttail call x86_thiscallcc void (i8*, ...)* @varargs_thiscall(i8* %this, ...)
  ret void
bb1:
  ret void
}
