191d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis// Test this without pch. 291d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis// RUN: %clang_cc1 -fsyntax-only -emit-llvm-only %s 391d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis 491d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis// Test with pch. 591d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis// RUN: touch %t.empty.cpp 691d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis// RUN: %clang_cc1 -emit-pch -o %t %s 791d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis// RUN: %clang_cc1 -include-pch %t -emit-llvm-only %t.empty.cpp 891d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis 991d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis// rdar://10830559 1091d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis 11b2969b1e50580344891a98f5b241f8351fe371cfWarren Hunt//#pragma ms_struct on 1291d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis 1391d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidistemplate< typename T > 1491d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidisclass Templated 1591d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis{ 1691d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidispublic: 1791d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis struct s; 1891d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis}; 1991d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis 2091d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis 2191d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidisclass Foo 2291d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis{ 2391d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidisprivate: 2491d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis 2591d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis class Bar 2691d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis { 2791d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis private: 2891d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis class BarTypes { public: virtual void Func(); }; 2991d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis class BarImpl {}; 3091d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis friend class Foo; 3191d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis }; 3291d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis 3391d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis 3491d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis friend class Templated< Bar::BarImpl >::s; 3591d521de48f9650a1a87c67f19996c4af5b85f1bArgyrios Kyrtzidis}; 36