macro-exitm.s 862 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // RUN: llvm-mc -triple i386-unknown-unknown %s | FileCheck %s
  2. // .exitm is encountered in a normal macro expansion
  3. .macro REP
  4. .rept 3
  5. .long 0
  6. .exitm
  7. .endr
  8. .endm
  9. REP
  10. // Only the output from the first rept expansion should make it through:
  11. // CHECK: .long 0
  12. // CHECK-NOT: .long 0
  13. // .exitm is in a true branch
  14. .macro A
  15. .if 1
  16. .long 1
  17. .exitm
  18. .endif
  19. .long 1
  20. .endm
  21. A
  22. // CHECK: .long 1
  23. // CHECK-NOT: .long 1
  24. // .exitm is in a false branch
  25. .macro B
  26. .if 1
  27. .long 2
  28. .else
  29. .exitm
  30. .endif
  31. .long 2
  32. .endm
  33. B
  34. // CHECK: .long 2
  35. // CHECK: .long 2
  36. // .exitm is in a false branch that is encountered prior to the true branch
  37. .macro C
  38. .if 0
  39. .exitm
  40. .else
  41. .long 3
  42. .endif
  43. .long 3
  44. .endm
  45. C
  46. // CHECK: .long 3
  47. // CHECK: .long 3
  48. // .exitm is in a macro that's expanded in a conditional block.
  49. .macro D
  50. .long 4
  51. .exitm
  52. .long 4
  53. .endm
  54. .if 1
  55. D
  56. .endif
  57. // CHECK: .long 4
  58. // CHECK-NOT: .long 4