1c9bd88e6SHans Wennborg // RUN: %clang_cc1 %s -emit-llvm -triple %itanium_abi_triple -o - | FileCheck %s 218e4edaeSJohn McCall 318e4edaeSJohn McCall // CHECK: @_ZTVZZ1HvEN1S1IEvE1S = 418e4edaeSJohn McCall 518e4edaeSJohn McCall // CHECK: define {{.*}} @_Z2L1v( 618e4edaeSJohn McCall // CHECK: define {{.*}} @_ZZ2L1vEN1S2L2Ev( 718e4edaeSJohn McCall // CHECK: define {{.*}} @_ZZ2L1vEN1S2L2E_0v( 818e4edaeSJohn McCall // CHECK: define {{.*}} @_ZZ1FvEN1S1T1S1T1GEv( 918e4edaeSJohn McCall // CHECK: define {{.*}} @_ZZZ2L1vEN1S2L2EvEN1S3L3aEv( 1018e4edaeSJohn McCall // CHECK: define {{.*}} @_ZZZ2L1vEN1S2L2EvEN1S3L3bE_0v( 11*e5df59ffSRafael Espindola // CHECK: define {{.*}} @_ZZZ2L1vEN1S2L2E_0vEN1S3L3cEv( 12*e5df59ffSRafael Espindola // CHECK: define {{.*}} @_ZZZ2L1vEN1S2L2E_0vEN1S3L3dE_0v( 1318e4edaeSJohn McCall L1()1418e4edaeSJohn McCallvoid L1() { 1518e4edaeSJohn McCall { 1618e4edaeSJohn McCall struct S { 1718e4edaeSJohn McCall void L2() { 1818e4edaeSJohn McCall { 1918e4edaeSJohn McCall struct S { 2018e4edaeSJohn McCall void L3a() {} 2118e4edaeSJohn McCall }; 2218e4edaeSJohn McCall S().L3a(); 2318e4edaeSJohn McCall } 2418e4edaeSJohn McCall { 2518e4edaeSJohn McCall struct S { 2618e4edaeSJohn McCall void L3b() {} 2718e4edaeSJohn McCall }; 2818e4edaeSJohn McCall S().L3b(); 2918e4edaeSJohn McCall } 3018e4edaeSJohn McCall } 3118e4edaeSJohn McCall }; 3218e4edaeSJohn McCall S().L2(); 3318e4edaeSJohn McCall } 3418e4edaeSJohn McCall { 3518e4edaeSJohn McCall struct S { 3618e4edaeSJohn McCall void L2() { 3718e4edaeSJohn McCall { 3818e4edaeSJohn McCall struct S { 3918e4edaeSJohn McCall void L3c() {} 4018e4edaeSJohn McCall }; 4118e4edaeSJohn McCall S().L3c(); 4218e4edaeSJohn McCall } 4318e4edaeSJohn McCall { 4418e4edaeSJohn McCall struct S { 4518e4edaeSJohn McCall void L3d() {} 4618e4edaeSJohn McCall }; 4718e4edaeSJohn McCall S().L3d(); 4818e4edaeSJohn McCall } 4918e4edaeSJohn McCall } 5018e4edaeSJohn McCall }; 5118e4edaeSJohn McCall S().L2(); 5218e4edaeSJohn McCall } 5318e4edaeSJohn McCall } 5418e4edaeSJohn McCall F()5518e4edaeSJohn McCallvoid F() { 5618e4edaeSJohn McCall struct S { 5718e4edaeSJohn McCall struct T { 5818e4edaeSJohn McCall struct S { 5918e4edaeSJohn McCall struct T { 6018e4edaeSJohn McCall void G() {} 6118e4edaeSJohn McCall }; 6218e4edaeSJohn McCall }; 6318e4edaeSJohn McCall }; 6418e4edaeSJohn McCall }; 6518e4edaeSJohn McCall S::T::S::T().G(); 6618e4edaeSJohn McCall } 6718e4edaeSJohn McCall 6818e4edaeSJohn McCall struct B { virtual void Foo() = 0; }; 6918e4edaeSJohn McCall void G(const B &); 7018e4edaeSJohn McCall H()7118e4edaeSJohn McCallvoid H() { 7218e4edaeSJohn McCall struct S { 7318e4edaeSJohn McCall void I() { 7418e4edaeSJohn McCall struct S : B { 7518e4edaeSJohn McCall virtual void Foo() {} 7618e4edaeSJohn McCall }; 7718e4edaeSJohn McCall G(S()); 7818e4edaeSJohn McCall } 7918e4edaeSJohn McCall }; 8018e4edaeSJohn McCall S().I(); 8118e4edaeSJohn McCall } 82