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