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"
13template <typename T>
14struct TS1 {
15    void m() {
16      T a;
17      T b = a;
18    }
19};
20#pragma clang diagnostic pop
21
22#else
23
24
25template <typename T>
26struct 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
35void f() {
36    TS1<int> ts1;
37    ts1.m();
38
39
40    TS2<int> ts2;
41    ts2.m();
42}
43
44#endif
45