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 Livoid test(S1*, S2*) { 44*67e74705SXin Li } 45*67e74705SXin Li 46*67e74705SXin Li #endif 47