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