62 lines · cpp
1// RUN: %clang_cc1 %s -emit-llvm -triple %itanium_abi_triple -o - | FileCheck %s2 3// CHECK: @_ZTVZ1GvE1C = {{.*}} @_ZTIZ1GvE1C, {{.*}} @_ZZ1GvENK1C1FEv4// CHECK: @_ZTIZ1GvE1C = {{.*}} @_ZTSZ1GvE1C5// CHECK: @_ZTVZ1GvE1C_0 = {{.*}} @_ZTIZ1GvE1C_0, {{.*}} @_ZZ1GvENK1C1FE_0v6// CHECK: @_ZTIZ1GvE1C_0 = {{.*}} @_ZTSZ1GvE1C_07// CHECK: @_ZTVZ1GvE1C_1 = {{.*}} @_ZTIZ1GvE1C_1, {{.*}} @_ZZ1GvENK1C1FE_1v8// CHECK: @_ZTIZ1GvE1C_1 = {{.*}} @_ZTSZ1GvE1C_19// CHECK: @_ZTVZN1J1KEvE1C = {{.*}} @_ZTIZN1J1KEvE1C, {{.*}} @_ZZN1J1KEvENK1C1FEv10// CHECK: @_ZTIZN1J1KEvE1C = {{.*}} @_ZTSZN1J1KEvE1C11 12// CHECK: define {{.*}} @_ZZ1GvEN1CC2Ev(13// CHECK: define {{.*}} @_ZZ1GvENK1C1FEv(14// CHECK: define {{.*}} @_ZZ1GvEN1CC2E_0v(15// CHECK: define {{.*}} @_ZZ1GvENK1C1FE_0v(16// CHECK: define {{.*}} @_ZZ1GvENK1C1GE_0v(17// CHECK: define {{.*}} @_ZZ1GvEN1CC2E_1v(18// CHECK: define {{.*}} @_ZZ1GvENK1C1FE_1v(19// CHECK: define {{.*}} @_ZZ1GvENK1C1HE_1v(20// CHECK: define {{.*}} @_ZZN1J1KEvEN1CC2Ev(21// CHECK: define {{.*}} @_ZZN1J1KEvENK1C1FEv(22 23struct I { 24 virtual void F() const = 0;25};26 27void Go(const I &i);28 29void G() { 30 { 31 struct C : I { 32 void F() const {}33 };34 Go(C());35 }36 { 37 struct C : I { 38 void F() const { G(); }39 void G() const {}40 };41 Go(C());42 }43 { 44 struct C : I { 45 void F() const { H(); }46 void H() const {}47 };48 Go(C());49 }50}51 52struct J {53 void K();54};55 56void J::K() {57 struct C : I {58 void F() const {}59 };60 Go(C());61}62