1 | // Test this without pch. |
2 | // RUN: %clang_cc1 -include %s -fsyntax-only -verify %s |
3 | |
4 | // Test with pch. |
5 | // RUN: %clang_cc1 -emit-pch -o %t %s |
6 | // RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s |
7 | |
8 | #ifndef HEADER |
9 | #define HEADER |
10 | |
11 | extern float y; |
12 | extern int *ip, x; |
13 | |
14 | float z; |
15 | |
16 | int z2 = 17; |
17 | |
18 | #define MAKE_HAPPY(X) X##Happy |
19 | int MAKE_HAPPY(Very); |
20 | |
21 | #define A_MACRO_IN_THE_PCH 492 |
22 | #define FUNCLIKE_MACRO(X, Y) X ## Y |
23 | |
24 | #define PASTE2(x,y) x##y |
25 | #define PASTE1(x,y) PASTE2(x,y) |
26 | #define UNIQUE(x) PASTE1(x,__COUNTER__) |
27 | |
28 | int UNIQUE(a); // a0 |
29 | int UNIQUE(a); // a1 |
30 | |
31 | #else |
32 | |
33 | int *ip2 = &x; |
34 | float *fp = &ip; // expected-warning{{incompatible pointer types}} |
35 | double z; // expected-error{{redefinition}} expected-note@14{{previous}} |
36 | int z2 = 18; // expected-error{{redefinition}} expected-note@16{{previous}} |
37 | double VeryHappy; // expected-error{{redefinition}} expected-note@19{{previous definition is here}} |
38 | |
39 | int Q = A_MACRO_IN_THE_PCH; |
40 | |
41 | int R = FUNCLIKE_MACRO(A_MACRO_, IN_THE_PCH); |
42 | |
43 | |
44 | int UNIQUE(a); // a2 |
45 | int *Arr[] = { &a0, &a1, &a2 }; |
46 | |
47 | #endif |
48 | |