macroscopes.cpp 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. // RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macroscopes.cpp %s | FileCheck %s
  2. #define starts_a_scope for (int i = 0; i < 2; ++i) {
  3. #define ends_a_scope \
  4. x = x; \
  5. }
  6. #define some_code \
  7. x = x; \
  8. if (x == 0) { \
  9. x = 1; \
  10. } else { \
  11. x = 2; \
  12. } \
  13. if (true) { \
  14. x = x; \
  15. } else { \
  16. x = x; \
  17. }
  18. #define starts_a_while while (x < 5)
  19. #define simple_stmt ++x
  20. // CHECK: main
  21. // CHECK-NEXT: File 0, [[@LINE+1]]:12 -> {{[0-9]+}}:2 = #0
  22. int main() {
  23. int x = 0;
  24. // CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:3 -> [[@LINE+2]]:17 = #0
  25. // CHECK-NEXT: File 0, [[@LINE+1]]:17 -> [[@LINE+7]]:15 = #1
  26. starts_a_scope
  27. x = x;
  28. // CHECK-NEXT: Expansion,File 0, [[@LINE+1]]:5 -> [[@LINE+1]]:14 = #1
  29. some_code
  30. x = x;
  31. // CHECK-NEXT: Expansion,File 0, [[@LINE+1]]:3 -> [[@LINE+1]]:15 = #1
  32. ends_a_scope
  33. // CHECK-NEXT: Expansion,File 0, [[@LINE+4]]:3 -> [[@LINE+4]]:17 = #0
  34. // CHECK-NEXT: File 0, [[@LINE+3]]:17 -> [[@LINE+5]]:15 = #4
  35. // CHECK-NEXT: Expansion,File 0, [[@LINE+3]]:5 -> [[@LINE+3]]:14 = #4
  36. // CHECK-NEXT: Expansion,File 0, [[@LINE+3]]:3 -> [[@LINE+3]]:15 = #4
  37. starts_a_scope
  38. some_code
  39. ends_a_scope
  40. // CHECK-NEXT: Expansion,File 0, [[@LINE+3]]:3 -> [[@LINE+3]]:17 = #0
  41. // CHECK-NEXT: File 0, [[@LINE+2]]:17 -> [[@LINE+3]]:15 = #7
  42. // CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:3 -> [[@LINE+2]]:15 = #7
  43. starts_a_scope
  44. ends_a_scope
  45. // CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:3 -> [[@LINE+2]]:17 = #0
  46. // CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:5 -> [[@LINE+2]]:16 = #8
  47. starts_a_while
  48. simple_stmt;
  49. x = 0;
  50. // CHECK-NEXT: Expansion,File 0, [[@LINE+4]]:3 -> [[@LINE+4]]:17 = #0
  51. // CHECK-NEXT: File 0, [[@LINE+3]]:18 -> [[@LINE+5]]:15 = #9
  52. // CHECK-NEXT: Expansion,File 0, [[@LINE+3]]:5 -> [[@LINE+3]]:16 = #9
  53. // CHECK-NEXT: Expansion,File 0, [[@LINE+3]]:3 -> [[@LINE+3]]:15 = #9
  54. starts_a_while {
  55. simple_stmt;
  56. ends_a_scope
  57. return 0;
  58. }
  59. // CHECK-NEXT: File 1, 3:24 -> 3:53 = #0
  60. // CHECK-NEXT: File 1, 3:40 -> 3:45 = (#0 + #1)
  61. // CHECK-NEXT: File 1, 3:47 -> 3:50 = #1
  62. // CHECK-NEXT: File 1, 3:52 -> 3:53 = #1
  63. // CHECK-NEXT: File 2, 10:3 -> 20:4 = #1
  64. // CHECK-NEXT: File 2, 11:7 -> 11:13 = #1
  65. // CHECK-NEXT: File 2, 11:15 -> 13:4 = #2
  66. // CHECK-NEXT: File 2, 13:10 -> 15:4 = (#1 - #2)
  67. // CHECK-NEXT: File 2, 16:7 -> 16:11 = #1
  68. // CHECK-NEXT: File 2, 16:13 -> 18:4 = #3
  69. // CHECK-NEXT: File 2, 18:10 -> 20:4 = (#1 - #3)
  70. // CHECK-NEXT: File 3, 6:3 -> 7:4 = #1
  71. // CHECK-NEXT: File 4, 3:24 -> 3:53 = #0
  72. // CHECK-NEXT: File 4, 3:40 -> 3:45 = (#0 + #4)
  73. // CHECK-NEXT: File 4, 3:47 -> 3:50 = #4
  74. // CHECK-NEXT: File 4, 3:52 -> 3:53 = #4
  75. // CHECK-NEXT: File 5, 10:3 -> 20:4 = #4
  76. // CHECK-NEXT: File 5, 11:7 -> 11:13 = #4
  77. // CHECK-NEXT: File 5, 11:15 -> 13:4 = #5
  78. // CHECK-NEXT: File 5, 13:10 -> 15:4 = (#4 - #5)
  79. // CHECK-NEXT: File 5, 16:7 -> 16:11 = #4
  80. // CHECK-NEXT: File 5, 16:13 -> 18:4 = #6
  81. // CHECK-NEXT: File 5, 18:10 -> 20:4 = (#4 - #6)
  82. // CHECK-NEXT: File 6, 6:3 -> 7:4 = #4
  83. // CHECK-NEXT: File 7, 3:24 -> 3:53 = #0
  84. // CHECK-NEXT: File 7, 3:40 -> 3:45 = (#0 + #7)
  85. // CHECK-NEXT: File 7, 3:47 -> 3:50 = #7
  86. // CHECK-NEXT: File 7, 3:52 -> 3:53 = #7
  87. // CHECK-NEXT: File 8, 6:3 -> 7:4 = #7
  88. // CHECK-NEXT: File 9, 22:24 -> 22:37 = #0
  89. // CHECK-NEXT: File 9, 22:31 -> 22:36 = (#0 + #8)
  90. // CHECK-NEXT: File 10, 23:21 -> 23:24 = #8
  91. // CHECK-NEXT: File 11, 22:24 -> 22:37 = #0
  92. // CHECK-NEXT: File 11, 22:31 -> 22:36 = (#0 + #9)
  93. // CHECK-NEXT: File 12, 23:21 -> 23:24 = #9
  94. // CHECK-NEXT: File 13, 6:3 -> 7:4 = #9