1 | // Test this without pch. |
2 | // RUN: %clang_cc1 %s -include %s -verify -fsyntax-only -Wuninitialized |
3 | |
4 | // Test with pch. |
5 | // RUN: %clang_cc1 %s -emit-pch -o %t |
6 | // RUN: %clang_cc1 %s -include-pch %t -verify -fsyntax-only -Wuninitialized |
7 | |
8 | #ifndef HEADER |
9 | #define HEADER |
10 | |
11 | #pragma clang diagnostic push |
12 | #pragma clang diagnostic ignored "-Wuninitialized" |
13 | template <typename T> |
14 | struct TS1 { |
15 | void m() { |
16 | T a; |
17 | T b = a; |
18 | } |
19 | }; |
20 | #pragma clang diagnostic pop |
21 | |
22 | #else |
23 | |
24 | |
25 | template <typename T> |
26 | struct TS2 { |
27 | void m() { |
28 | T a; |
29 | T b = a; // expected-warning {{variable 'a' is uninitialized}} \ |
30 | expected-note@41 {{in instantiation of member function}} \ |
31 | expected-note@28 {{initialize the variable 'a' to silence}} |
32 | } |
33 | }; |
34 | |
35 | void f() { |
36 | TS1<int> ts1; |
37 | ts1.m(); |
38 | |
39 | |
40 | TS2<int> ts2; |
41 | ts2.m(); |
42 | } |
43 | |
44 | #endif |
45 | |