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