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