82 lines · cpp
1// RUN: %clang_cc1 %s -emit-llvm -triple %itanium_abi_triple -o - | FileCheck %s2 3// CHECK: @_ZTVZZ1HvEN1S1IEvE1S = 4 5// CHECK: define {{.*}} @_Z2L1v(6// CHECK: define {{.*}} @_ZZ2L1vEN1S2L2Ev(7// CHECK: define {{.*}} @_ZZ2L1vEN1S2L2E_0v(8// CHECK: define {{.*}} @_ZZ1FvEN1S1T1S1T1GEv(9// CHECK: define {{.*}} @_ZZZ2L1vEN1S2L2EvEN1S3L3aEv(10// CHECK: define {{.*}} @_ZZZ2L1vEN1S2L2EvEN1S3L3bE_0v(11// CHECK: define {{.*}} @_ZZZ2L1vEN1S2L2E_0vEN1S3L3cEv(12// CHECK: define {{.*}} @_ZZZ2L1vEN1S2L2E_0vEN1S3L3dE_0v(13 14void L1() {15 {16 struct S {17 void L2() {18 {19 struct S {20 void L3a() {}21 };22 S().L3a();23 }24 {25 struct S {26 void L3b() {}27 };28 S().L3b();29 }30 }31 };32 S().L2();33 }34 {35 struct S {36 void L2() {37 {38 struct S {39 void L3c() {}40 };41 S().L3c();42 }43 {44 struct S {45 void L3d() {}46 };47 S().L3d();48 }49 }50 };51 S().L2();52 }53}54 55void F() {56 struct S {57 struct T {58 struct S {59 struct T {60 void G() {}61 };62 };63 };64 };65 S::T::S::T().G();66}67 68struct B { virtual void Foo() = 0; };69void G(const B &);70 71void H() {72 struct S {73 void I() {74 struct S : B {75 virtual void Foo() {}76 };77 G(S());78 }79 };80 S().I();81}82