re PR c++/15882 (Check for return type of overloaded operator new too early)

PR c++/15882
	* method.c (use_thunk): Check DECL_WEAK as well as
	DECL_ONE_ONLY.

From-SVN: r153909
This commit is contained in:
Jason Merrill 2009-11-04 14:34:25 -05:00 committed by Jason Merrill
parent d87f43c358
commit eeeca7d418
4 changed files with 23 additions and 1 deletions

View File

@ -1,5 +1,9 @@
2009-11-04 Jason Merrill <jason@redhat.com>
PR c++/15882
* method.c (use_thunk): Check DECL_WEAK as well as
DECL_ONE_ONLY.
PR c++/17365, DR 218
* name-lookup.c (add_function): Ignore non-functions.

View File

@ -378,7 +378,7 @@ use_thunk (tree thunk_fndecl, bool emit_p)
DECL_VISIBILITY (thunk_fndecl) = DECL_VISIBILITY (function);
DECL_VISIBILITY_SPECIFIED (thunk_fndecl)
= DECL_VISIBILITY_SPECIFIED (function);
if (DECL_ONE_ONLY (function))
if (DECL_ONE_ONLY (function) || DECL_WEAK (function))
make_decl_one_only (thunk_fndecl, cxx_comdat_group (thunk_fndecl));
if (flag_syntax_only)

View File

@ -1,3 +1,8 @@
2009-11-04 Jason Merrill <jason@redhat.com>
PR c++/15882
* g++.dg/abi/thunk5.C: New.
2009-11-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR rtl-opt/41833

View File

@ -0,0 +1,13 @@
// PR c++/15882
// The thunks should be weak even on targets without one-only support.
// { dg-require-weak "" }
// { dg-final { scan-assembler "weak.*ZTv" } }
struct A
{
virtual ~A() { }
};
struct B: virtual A { };
B b;