blockaddress.ll 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. ; RUN: llvm-as < %s | llvm-dis | FileCheck %s
  2. ; RUN: verify-uselistorder < %s
  3. ; PR9857
  4. define void @f(i8** nocapture %ptr1) {
  5. ; CHECK: define void @f
  6. entry:
  7. br label %here.i
  8. here.i:
  9. store i8* blockaddress(@doit, %here), i8** %ptr1, align 8
  10. ; CHECK: blockaddress(@doit, %here)
  11. br label %doit.exit
  12. doit.exit:
  13. ret void
  14. }
  15. define void @doit(i8** nocapture %pptr) {
  16. ; CHECK: define void @doit
  17. entry:
  18. br label %here
  19. here:
  20. store i8* blockaddress(@doit, %here), i8** %pptr, align 8
  21. ; CHECK: blockaddress(@doit, %here)
  22. br label %end
  23. end:
  24. ret void
  25. }
  26. ; PR13895
  27. define void @doitagain(i8** nocapture %pptr) {
  28. ; CHECK: define void @doitagain
  29. entry:
  30. br label %here
  31. here:
  32. store i8* blockaddress(@doit, %here), i8** %pptr, align 8
  33. ; CHECK: blockaddress(@doit, %here)
  34. br label %end
  35. end:
  36. ret void
  37. }
  38. ; Check a blockaddress taken in two separate functions before the referenced
  39. ; function.
  40. define i8* @take1() {
  41. ret i8* blockaddress(@taken, %bb)
  42. }
  43. define i8* @take2() {
  44. ret i8* blockaddress(@taken, %bb)
  45. }
  46. define void @taken() {
  47. unreachable
  48. bb:
  49. unreachable
  50. }