1 | // RUN: %clang_cc1 %s -emit-pch -o %t1.pch -verify |
2 | // RUN: %clang_cc1 %s -emit-pch -o %t2.pch -include-pch %t1.pch -verify |
3 | // RUN: %clang_cc1 -fsyntax-only %s -include-pch %t2.pch -verify |
4 | |
5 | // Test that a redefinition inside the PCH won't manifest as an ambiguous macro. |
6 | // rdar://13016031 |
7 | |
8 | #ifndef HEADER1 |
9 | #define HEADER1 |
10 | |
11 | #define M1 0 // expected-note {{previous}} |
12 | #define M1 1 // expected-warning {{redefined}} |
13 | |
14 | #define M2 3 |
15 | |
16 | #elif !defined(HEADER2) |
17 | #define HEADER2 |
18 | |
19 | #define M2 4 // expected-warning {{redefined}} |
20 | // expected-note@-6 {{previous}} |
21 | |
22 | #else |
23 | |
24 | // Use the error to verify it was parsed. |
25 | int x = M1; // expected-note {{previous}} |
26 | int x = M2; // expected-error {{redefinition}} |
27 | |
28 | #endif |
29 | |