rewrite-includes-conditions.c 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. // RUN: %clang_cc1 -E -frewrite-includes -I %S/Inputs %s -o - | FileCheck -strict-whitespace %s
  2. // RUN: %clang_cc1 -E -frewrite-includes -I %S/Inputs %s -o - | %clang_cc1 -Wall -Wextra -Wconversion -x c -fsyntax-only 2>&1 | FileCheck -check-prefix=COMPILE --implicit-check-not warning: %s
  3. #define value1 1
  4. #if value1
  5. int line1;
  6. #else
  7. int line2;
  8. #endif
  9. #define value2 2
  10. #if value1 == value2
  11. int line3;
  12. #elif value1 > value2
  13. int line4;
  14. #elif value1 < value2
  15. int line5;
  16. #else
  17. int line6;
  18. #endif
  19. #if __has_include(<rewrite-includes3.h>)
  20. #include <rewrite-includes3.h>
  21. #endif
  22. #define HAS_INCLUDE(x) __has_include(x)
  23. #if HAS_INCLUDE(<rewrite-includes1.h>)
  24. #endif
  25. /*
  26. #if value1
  27. commented out
  28. */
  29. #if value1 < value2 \
  30. || value1 != value2
  31. int line7;
  32. #endif
  33. #if value1 /*
  34. */
  35. #endif
  36. static int unused;
  37. // ENDCOMPARE
  38. // CHECK: #if 0 /* disabled by -frewrite-includes */
  39. // CHECK-NEXT: #if value1
  40. // CHECK-NEXT: #endif
  41. // CHECK-NEXT: #endif /* disabled by -frewrite-includes */
  42. // CHECK-NEXT: #if 1 /* evaluated by -frewrite-includes */
  43. // CHECK-NEXT: # 6 "{{.*}}rewrite-includes-conditions.c"
  44. // CHECK: #if 0 /* disabled by -frewrite-includes */
  45. // CHECK-NEXT: #if value1 == value2
  46. // CHECK-NEXT: #endif
  47. // CHECK-NEXT: #endif /* disabled by -frewrite-includes */
  48. // CHECK-NEXT: #if 0 /* evaluated by -frewrite-includes */
  49. // CHECK-NEXT: # 14 "{{.*}}rewrite-includes-conditions.c"
  50. // CHECK: #if 0 /* disabled by -frewrite-includes */
  51. // CHECK-NEXT: #if 0
  52. // CHECK-NEXT: #elif value1 > value2
  53. // CHECK-NEXT: #endif
  54. // CHECK-NEXT: #endif /* disabled by -frewrite-includes */
  55. // CHECK-NEXT: #elif 0 /* evaluated by -frewrite-includes */
  56. // CHECK-NEXT: # 16 "{{.*}}rewrite-includes-conditions.c"
  57. // CHECK: #if 0 /* disabled by -frewrite-includes */
  58. // CHECK-NEXT: #if 0
  59. // CHECK-NEXT: #elif value1 < value2
  60. // CHECK-NEXT: #endif
  61. // CHECK-NEXT: #endif /* disabled by -frewrite-includes */
  62. // CHECK-NEXT: #elif 1 /* evaluated by -frewrite-includes */
  63. // CHECK-NEXT: # 18 "{{.*}}rewrite-includes-conditions.c"
  64. // CHECK: #if 0 /* disabled by -frewrite-includes */
  65. // CHECK-NEXT: #if __has_include(<rewrite-includes3.h>)
  66. // CHECK-NEXT: #endif
  67. // CHECK-NEXT: #endif /* disabled by -frewrite-includes */
  68. // CHECK-NEXT: #if 1 /* evaluated by -frewrite-includes */
  69. // CHECK-NEXT: # 24 "{{.*}}rewrite-includes-conditions.c"
  70. // CHECK: #if 0 /* disabled by -frewrite-includes */
  71. // CHECK-NEXT: #if HAS_INCLUDE(<rewrite-includes1.h>)
  72. // CHECK-NEXT: #endif
  73. // CHECK-NEXT: #endif /* disabled by -frewrite-includes */
  74. // CHECK-NEXT: #if 1 /* evaluated by -frewrite-includes */
  75. // CHECK-NEXT: # 30 "{{.*}}rewrite-includes-conditions.c"
  76. // CHECK: #if 0 /* disabled by -frewrite-includes */
  77. // CHECK-NEXT: #if value1 < value2 \
  78. // CHECK-NEXT: || value1 != value2
  79. // CHECK-NEXT: #endif
  80. // CHECK-NEXT: #endif /* disabled by -frewrite-includes */
  81. // CHECK-NEXT: #if 1 /* evaluated by -frewrite-includes */
  82. // CHECK-NEXT: # 39 "{{.*}}rewrite-includes-conditions.c"
  83. // CHECK: #if 0 /* disabled by -frewrite-includes */
  84. // CHECK-NEXT: #if value1 /*
  85. // CHECK-NEXT: */
  86. // CHECK-NEXT: #endif
  87. // CHECK-NEXT: #endif /* disabled by -frewrite-includes */
  88. // CHECK-NEXT: #if 1 /* evaluated by -frewrite-includes */
  89. // CHECK-NEXT: # 44 "{{.*}}rewrite-includes-conditions.c"
  90. // CHECK: {{^}}// ENDCOMPARE{{$}}
  91. // COMPILE: Inputs{{[/\\]}}rewrite-includes3.h:1:31: warning: implicit conversion changes signedness:
  92. // COMPILE: rewrite-includes-conditions.c:46:12: warning: unused variable 'unused'