xref: /llvm-project/clang/test/Interpreter/delayed-template-parsing-pch.cpp (revision 66bd5d79891ddb8bf0d31d78c4973f6d20dcb571)
1 // Test the setup without incremental extensions first
2 // RUN: %clang_cc1 -std=c++17 -fdelayed-template-parsing -fpch-instantiate-templates %s -emit-pch -o %t.pch -verify
3 // RUN: %clang_cc1 -std=c++17 -fdelayed-template-parsing -include-pch %t.pch %s -verify
4 
5 // RUN: %clang_cc1 -std=c++17 -fdelayed-template-parsing -fincremental-extensions -fpch-instantiate-templates %s -emit-pch -o %t.incremental.pch -verify
6 // RUN: %clang_cc1 -std=c++17 -fdelayed-template-parsing -fincremental-extensions -include-pch %t.incremental.pch %s -verify
7 
8 // expected-no-diagnostics
9 
10 #ifndef PCH
11 #define PCH
12 
13 // Have one template that is instantiated in the PCH (via the passed option
14 // -fpch-instantiate-templates) and then serialized
15 template <typename T> T ft1() { return 0; }
16 inline int f1() { return ft1<int>(); }
17 
18 // Have a second late-parsed template that needs to be deserialized
19 template <typename T> T ft2() { return 0; }
20 
21 #else
22 
23 int f2() { return ft2<int>(); }
24 
25 #endif
26