| // Test the setup without incremental extensions first |
| // RUN: %clang_cc1 -std=c++17 -fdelayed-template-parsing -fpch-instantiate-templates %s -emit-pch -o %t.pch -verify |
| // RUN: %clang_cc1 -std=c++17 -fdelayed-template-parsing -include-pch %t.pch %s -verify |
| // RUN: %clang_cc1 -std=c++17 -fdelayed-template-parsing -fincremental-extensions -fpch-instantiate-templates %s -emit-pch -o %t.incremental.pch -verify |
| // RUN: %clang_cc1 -std=c++17 -fdelayed-template-parsing -fincremental-extensions -include-pch %t.incremental.pch %s -verify |
| // expected-no-diagnostics |
| // Have one template that is instantiated in the PCH (via the passed option |
| // -fpch-instantiate-templates) and then serialized |
| template <typename T> T ft1() { return 0; } |
| inline int f1() { return ft1<int>(); } |
| // Have a second late-parsed template that needs to be deserialized |
| template <typename T> T ft2() { return 0; } |
| int f2() { return ft2<int>(); } |