// RUN: %clang_cc1 %s -emit-llvm -triple %itanium_abi_triple -o - | FileCheck %s // CHECK: @_ZTVZ1GvE1C = {{.*}} @_ZTIZ1GvE1C {{.*}} @_ZZ1GvENK1C1FEv // CHECK: @_ZTIZ1GvE1C = {{.*}} @_ZTSZ1GvE1C // CHECK: @_ZTVZ1GvE1C_0 = {{.*}} @_ZTIZ1GvE1C_0 {{.*}} @_ZZ1GvENK1C1FE_0v // CHECK: @_ZTIZ1GvE1C_0 = {{.*}} @_ZTSZ1GvE1C_0 // CHECK: @_ZTVZ1GvE1C_1 = {{.*}} @_ZTIZ1GvE1C_1 {{.*}} @_ZZ1GvENK1C1FE_1v // CHECK: @_ZTIZ1GvE1C_1 = {{.*}} @_ZTSZ1GvE1C_1 // CHECK: @_ZTVZN1J1KEvE1C = {{.*}} @_ZTIZN1J1KEvE1C {{.*}} @_ZZN1J1KEvENK1C1FEv // CHECK: @_ZTIZN1J1KEvE1C = {{.*}} @_ZTSZN1J1KEvE1C // CHECK: define {{.*}} @_ZZ1GvEN1CC2Ev( // CHECK: define {{.*}} @_ZZ1GvENK1C1FEv( // CHECK: define {{.*}} @_ZZ1GvEN1CC2E_0v( // CHECK: define {{.*}} @_ZZ1GvENK1C1FE_0v( // CHECK: define {{.*}} @_ZZ1GvENK1C1GE_0v( // CHECK: define {{.*}} @_ZZ1GvEN1CC2E_1v( // CHECK: define {{.*}} @_ZZ1GvENK1C1FE_1v( // CHECK: define {{.*}} @_ZZ1GvENK1C1HE_1v( // CHECK: define {{.*}} @_ZZN1J1KEvEN1CC2Ev( // CHECK: define {{.*}} @_ZZN1J1KEvENK1C1FEv( struct I { virtual void F() const = 0; }; void Go(const I &i); void G() { { struct C : I { void F() const {} }; Go(C()); } { struct C : I { void F() const { G(); } void G() const {} }; Go(C()); } { struct C : I { void F() const { H(); } void H() const {} }; Go(C()); } } struct J { void K(); }; void J::K() { struct C : I { void F() const {} }; Go(C()); }