1*67e74705SXin Li // Test this without pch. 2*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -emit-llvm-only %s 3*67e74705SXin Li 4*67e74705SXin Li // Test with pch. 5*67e74705SXin Li // RUN: touch %t.empty.cpp 6*67e74705SXin Li // RUN: %clang_cc1 -emit-pch -o %t %s 7*67e74705SXin Li // RUN: %clang_cc1 -include-pch %t -emit-llvm-only %t.empty.cpp 8*67e74705SXin Li 9*67e74705SXin Li // rdar://10830559 10*67e74705SXin Li 11*67e74705SXin Li //#pragma ms_struct on 12*67e74705SXin Li 13*67e74705SXin Li template< typename T > 14*67e74705SXin Li class Templated 15*67e74705SXin Li { 16*67e74705SXin Li public: 17*67e74705SXin Li struct s; 18*67e74705SXin Li }; 19*67e74705SXin Li 20*67e74705SXin Li 21*67e74705SXin Li class Foo 22*67e74705SXin Li { 23*67e74705SXin Li private: 24*67e74705SXin Li 25*67e74705SXin Li class Bar 26*67e74705SXin Li { 27*67e74705SXin Li private: 28*67e74705SXin Li class BarTypes { public: virtual void Func(); }; 29*67e74705SXin Li class BarImpl {}; 30*67e74705SXin Li friend class Foo; 31*67e74705SXin Li }; 32*67e74705SXin Li 33*67e74705SXin Li 34*67e74705SXin Li friend class Templated< Bar::BarImpl >::s; 35*67e74705SXin Li }; 36