1*0a6a1f1dSLionel Sambuc // RUN: %clang_cc1 %s -emit-llvm -triple %itanium_abi_triple -o - | FileCheck %s 2f4a2713aSLionel Sambuc 3f4a2713aSLionel Sambuc // CHECK: @_ZTVZN1J1KEvE1C = {{.*}} @_ZTIZN1J1KEvE1C {{.*}} @_ZZN1J1KEvENK1C1FEv 4f4a2713aSLionel Sambuc // CHECK: @_ZTIZN1J1KEvE1C = {{.*}} @_ZTSZN1J1KEvE1C 5f4a2713aSLionel Sambuc // CHECK: @_ZTVZ1GvE1C_1 = {{.*}} @_ZTIZ1GvE1C_1 {{.*}} @_ZZ1GvENK1C1FE_1v 6f4a2713aSLionel Sambuc // CHECK: @_ZTIZ1GvE1C_1 = {{.*}} @_ZTSZ1GvE1C_1 7f4a2713aSLionel Sambuc // CHECK: @_ZTVZ1GvE1C_0 = {{.*}} @_ZTIZ1GvE1C_0 {{.*}} @_ZZ1GvENK1C1FE_0v 8f4a2713aSLionel Sambuc // CHECK: @_ZTIZ1GvE1C_0 = {{.*}} @_ZTSZ1GvE1C_0 9f4a2713aSLionel Sambuc // CHECK: @_ZTVZ1GvE1C = {{.*}} @_ZTIZ1GvE1C {{.*}} @_ZZ1GvENK1C1FEv 10f4a2713aSLionel Sambuc // CHECK: @_ZTIZ1GvE1C = {{.*}} @_ZTSZ1GvE1C 11f4a2713aSLionel Sambuc 12f4a2713aSLionel Sambuc // CHECK: define {{.*}} @_ZZN1J1KEvEN1CC2Ev( 13f4a2713aSLionel Sambuc // CHECK: define {{.*}} @_ZZN1J1KEvENK1C1FEv( 14f4a2713aSLionel Sambuc // CHECK: define {{.*}} @_ZZ1GvEN1CC2E_1v( 15f4a2713aSLionel Sambuc // CHECK: define {{.*}} @_ZZ1GvENK1C1FE_1v( 16f4a2713aSLionel Sambuc // CHECK: define {{.*}} @_ZZ1GvENK1C1HE_1v( 17f4a2713aSLionel Sambuc // CHECK: define {{.*}} @_ZZ1GvEN1CC2E_0v( 18f4a2713aSLionel Sambuc // CHECK: define {{.*}} @_ZZ1GvENK1C1FE_0v( 19f4a2713aSLionel Sambuc // CHECK: define {{.*}} @_ZZ1GvENK1C1GE_0v( 20f4a2713aSLionel Sambuc // CHECK: define {{.*}} @_ZZ1GvEN1CC2Ev( 21f4a2713aSLionel Sambuc // CHECK: define {{.*}} @_ZZ1GvENK1C1FEv( 22f4a2713aSLionel Sambuc 23f4a2713aSLionel Sambuc struct I { 24f4a2713aSLionel Sambuc virtual void F() const = 0; 25f4a2713aSLionel Sambuc }; 26f4a2713aSLionel Sambuc 27f4a2713aSLionel Sambuc void Go(const I &i); 28f4a2713aSLionel Sambuc G()29f4a2713aSLionel Sambucvoid G() { 30f4a2713aSLionel Sambuc { 31f4a2713aSLionel Sambuc struct C : I { 32f4a2713aSLionel Sambuc void F() const {} 33f4a2713aSLionel Sambuc }; 34f4a2713aSLionel Sambuc Go(C()); 35f4a2713aSLionel Sambuc } 36f4a2713aSLionel Sambuc { 37f4a2713aSLionel Sambuc struct C : I { 38f4a2713aSLionel Sambuc void F() const { G(); } 39f4a2713aSLionel Sambuc void G() const {} 40f4a2713aSLionel Sambuc }; 41f4a2713aSLionel Sambuc Go(C()); 42f4a2713aSLionel Sambuc } 43f4a2713aSLionel Sambuc { 44f4a2713aSLionel Sambuc struct C : I { 45f4a2713aSLionel Sambuc void F() const { H(); } 46f4a2713aSLionel Sambuc void H() const {} 47f4a2713aSLionel Sambuc }; 48f4a2713aSLionel Sambuc Go(C()); 49f4a2713aSLionel Sambuc } 50f4a2713aSLionel Sambuc } 51f4a2713aSLionel Sambuc 52f4a2713aSLionel Sambuc struct J { 53f4a2713aSLionel Sambuc void K(); 54f4a2713aSLionel Sambuc }; 55f4a2713aSLionel Sambuc K()56f4a2713aSLionel Sambucvoid J::K() { 57f4a2713aSLionel Sambuc struct C : I { 58f4a2713aSLionel Sambuc void F() const {} 59f4a2713aSLionel Sambuc }; 60f4a2713aSLionel Sambuc Go(C()); 61f4a2713aSLionel Sambuc } 62