10ee7c63fSCharles Li // RUN: %clang_cc1 -std=c++98 -emit-pch -o %t %s
20ee7c63fSCharles Li // RUN: %clang_cc1 -std=c++98 -fsyntax-only -include-pch %t %s -Wuninitialized -verify
30ee7c63fSCharles Li // RUN: %clang_cc1 -std=c++98 -fsyntax-only -include-pch %t %s -Wuninitialized -fdiagnostics-parseable-fixits 2>&1 | FileCheck %s
449f906a3SRichard Smith 
5*a45f713cSLuboš Luňák // RUN: %clang_cc1 -std=c++98 -emit-pch -fpch-instantiate-templates -o %t %s
6*a45f713cSLuboš Luňák // RUN: %clang_cc1 -std=c++98 -fsyntax-only -include-pch %t %s -Wuninitialized -verify
7*a45f713cSLuboš Luňák // RUN: %clang_cc1 -std=c++98 -fsyntax-only -include-pch %t %s -Wuninitialized -fdiagnostics-parseable-fixits 2>&1 | FileCheck %s
8*a45f713cSLuboš Luňák 
949f906a3SRichard Smith #ifndef HEADER
1049f906a3SRichard Smith #define HEADER
1149f906a3SRichard Smith 
1249f906a3SRichard Smith #define NULL 0
1349f906a3SRichard Smith template<typename T>
f()1449f906a3SRichard Smith void *f() {
15*a45f713cSLuboš Luňák   void *p;  // @15
16*a45f713cSLuboš Luňák   return p; // @16
1749f906a3SRichard Smith }
1849f906a3SRichard Smith #undef NULL
1949f906a3SRichard Smith template<typename T>
g()2049f906a3SRichard Smith void *g() {
21*a45f713cSLuboš Luňák   void *p;  // @21
22*a45f713cSLuboš Luňák   return p; // @22
2349f906a3SRichard Smith }
2449f906a3SRichard Smith 
2549f906a3SRichard Smith #else
2649f906a3SRichard Smith 
27*a45f713cSLuboš Luňák // expected-warning@16 {{uninitialized}}
28*a45f713cSLuboš Luňák // expected-note@15 {{initialize}}
29*a45f713cSLuboš Luňák // CHECK: fix-it:"{{.*}}":{15:10-15:10}:" = NULL"
3049f906a3SRichard Smith 
31*a45f713cSLuboš Luňák // expected-warning@22 {{uninitialized}}
32*a45f713cSLuboš Luňák // expected-note@21 {{initialize}}
33*a45f713cSLuboš Luňák // CHECK: fix-it:"{{.*}}":{21:10-21:10}:" = 0"
3449f906a3SRichard Smith 
main()3549f906a3SRichard Smith int main() {
3649f906a3SRichard Smith   f<int>(); // expected-note {{instantiation}}
3749f906a3SRichard Smith   g<int>(); // expected-note {{instantiation}}
3849f906a3SRichard Smith }
3949f906a3SRichard Smith 
4049f906a3SRichard Smith #endif
41