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