fastcc.ll 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. ; RUN: opt < %s -globalopt -S | FileCheck %s
  2. define internal i32 @f(i32* %m) {
  3. ; CHECK-LABEL: define internal fastcc i32 @f
  4. %v = load i32, i32* %m
  5. ret i32 %v
  6. }
  7. define internal x86_thiscallcc i32 @g(i32* %m) {
  8. ; CHECK-LABEL: define internal fastcc i32 @g
  9. %v = load i32, i32* %m
  10. ret i32 %v
  11. }
  12. ; Leave this one alone, because the user went out of their way to request this
  13. ; convention.
  14. define internal coldcc i32 @h(i32* %m) {
  15. ; CHECK-LABEL: define internal coldcc i32 @h
  16. %v = load i32, i32* %m
  17. ret i32 %v
  18. }
  19. define internal i32 @j(i32* %m) {
  20. ; CHECK-LABEL: define internal i32 @j
  21. %v = load i32, i32* %m
  22. ret i32 %v
  23. }
  24. define void @call_things() {
  25. %m = alloca i32
  26. call i32 @f(i32* %m)
  27. call x86_thiscallcc i32 @g(i32* %m)
  28. call coldcc i32 @h(i32* %m)
  29. call i32 @j(i32* %m)
  30. ret void
  31. }
  32. @llvm.used = appending global [1 x i8*] [
  33. i8* bitcast (i32(i32*)* @j to i8*)
  34. ], section "llvm.metadata"
  35. ; CHECK-LABEL: define void @call_things()
  36. ; CHECK: call fastcc i32 @f
  37. ; CHECK: call fastcc i32 @g
  38. ; CHECK: call coldcc i32 @h
  39. ; CHECK: call i32 @j