xref: /aosp_15_r20/external/clang/test/PCH/check-deserializations.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -triple x86_64-linux-gnu -std=c++11 -emit-pch -o %t.1 %s
2*67e74705SXin Li // RUN: %clang_cc1 -triple x86_64-linux-gnu -error-on-deserialized-decl S1_keyfunc -error-on-deserialized-decl S3 -error-on-deserialized-decl DND -std=c++11 -include-pch %t.1 -emit-pch -o %t.2 %s
3*67e74705SXin Li // RUN: %clang_cc1 -triple x86_64-linux-gnu -error-on-deserialized-decl S1_method -error-on-deserialized-decl S3 -error-on-deserialized-decl DND -std=c++11 -include-pch %t.2 -emit-llvm-only %s
4*67e74705SXin Li 
5*67e74705SXin Li // FIXME: Why does this require an x86 target?
6*67e74705SXin Li // REQUIRES: x86-registered-target
7*67e74705SXin Li 
8*67e74705SXin Li #ifndef HEADER1
9*67e74705SXin Li #define HEADER1
10*67e74705SXin Li // Header.
11*67e74705SXin Li 
12*67e74705SXin Li struct S1 {
13*67e74705SXin Li   void S1_method();
14*67e74705SXin Li   virtual void S1_keyfunc();
15*67e74705SXin Li };
16*67e74705SXin Li 
17*67e74705SXin Li struct S3 {};
18*67e74705SXin Li 
19*67e74705SXin Li struct S2 {
20*67e74705SXin Li   operator S3();
21*67e74705SXin Li };
22*67e74705SXin Li 
23*67e74705SXin Li namespace vars {
f()24*67e74705SXin Li   constexpr int f() { return 0; }
Xvars::X25*67e74705SXin Li   struct X { constexpr X() {} };
26*67e74705SXin Li   namespace v1 { const int DND = 0; }
27*67e74705SXin Li   namespace v2 { constexpr int DND = f(); }
28*67e74705SXin Li   namespace v3 { static X DND; }
29*67e74705SXin Li   namespace v4 { constexpr X DND = {}; }
30*67e74705SXin Li }
31*67e74705SXin Li 
32*67e74705SXin Li #elif !defined(HEADER2)
33*67e74705SXin Li #define HEADER2
34*67e74705SXin Li 
35*67e74705SXin Li // Chained PCH.
36*67e74705SXin Li S1 *s1;
37*67e74705SXin Li S2 *s2;
38*67e74705SXin Li 
39*67e74705SXin Li #else
40*67e74705SXin Li 
41*67e74705SXin Li // Using the headers.
42*67e74705SXin Li 
test(S1 *,S2 *)43*67e74705SXin Li void test(S1*, S2*) {
44*67e74705SXin Li }
45*67e74705SXin Li 
46*67e74705SXin Li #endif
47