C++ PATCH for c++/60566 (dtor devirtualization and missing thunks)

Andreas Schwab schwab@suse.de
Thu Mar 27 11:52:00 GMT 2014


Jason Merrill <jason@redhat.com> writes:

> diff --git a/gcc/testsuite/g++.dg/abi/thunk6.C b/gcc/testsuite/g++.dg/abi/thunk6.C
> new file mode 100644
> index 0000000..e3d07f2
> --- /dev/null
> +++ b/gcc/testsuite/g++.dg/abi/thunk6.C
> @@ -0,0 +1,18 @@
> +// PR c++/60566
> +// We need to emit the construction vtable thunk for ~C even if we aren't
> +// going to use it.
> +
> +struct A
> +{
> +  virtual void f() = 0;
> +  virtual ~A() {}
> +};
> +
> +struct B: virtual A { int i; };
> +struct C: virtual A { int i; ~C(); };
> +
> +C::~C() {}
> +
> +int main() {}
> +
> +// { dg-final { scan-assembler "_ZTv0_n32_N1CD1Ev" } }

FAIL: g++.dg/abi/thunk6.C -std=c++11  scan-assembler _ZTv0_n32_N1CD1Ev

$ grep _ZTv0_ thunk6.s
        .globl  _ZTv0_n16_N1CD1Ev
        .type   _ZTv0_n16_N1CD1Ev, @function
_ZTv0_n16_N1CD1Ev:
        .size   _ZTv0_n16_N1CD1Ev, .-_ZTv0_n16_N1CD1Ev
        .globl  _ZTv0_n16_N1CD0Ev
        .type   _ZTv0_n16_N1CD0Ev, @function
_ZTv0_n16_N1CD0Ev:
        .size   _ZTv0_n16_N1CD0Ev, .-_ZTv0_n16_N1CD0Ev

Andreas.

-- 
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."



More information about the Gcc-patches mailing list