musttail-valid.ll 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. ; RUN: llvm-as %s -o /dev/null
  2. ; Should assemble without error.
  3. declare void @similar_param_ptrty_callee(i8*)
  4. define void @similar_param_ptrty(i32*) {
  5. musttail call void @similar_param_ptrty_callee(i8* null)
  6. ret void
  7. }
  8. declare i8* @similar_ret_ptrty_callee()
  9. define i32* @similar_ret_ptrty() {
  10. %v = musttail call i8* @similar_ret_ptrty_callee()
  11. %w = bitcast i8* %v to i32*
  12. ret i32* %w
  13. }
  14. declare x86_thiscallcc void @varargs_thiscall(i8*, ...)
  15. define x86_thiscallcc void @varargs_thiscall_thunk(i8* %this, ...) {
  16. musttail call x86_thiscallcc void (i8*, ...) @varargs_thiscall(i8* %this, ...)
  17. ret void
  18. }
  19. declare x86_fastcallcc void @varargs_fastcall(i8*, ...)
  20. define x86_fastcallcc void @varargs_fastcall_thunk(i8* %this, ...) {
  21. musttail call x86_fastcallcc void (i8*, ...) @varargs_fastcall(i8* %this, ...)
  22. ret void
  23. }
  24. define x86_thiscallcc void @varargs_thiscall_unreachable(i8* %this, ...) {
  25. unreachable
  26. }
  27. define x86_thiscallcc void @varargs_thiscall_ret_unreachable(i8* %this, ...) {
  28. musttail call x86_thiscallcc void (i8*, ...) @varargs_thiscall(i8* %this, ...)
  29. ret void
  30. bb1:
  31. ret void
  32. }