mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-07 20:17:25 +08:00
decl.c (copy_args_p): Handle copy elision for types with virtual bases.
* decl.c (copy_args_p): Handle copy elision for types with virtual bases. * call.c (build_over_call): Likewise. From-SVN: r17022
This commit is contained in:
parent
25b76cc193
commit
67437d5b5d
@ -1,3 +1,9 @@
|
||||
Mon Dec 8 23:17:13 1997 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* decl.c (copy_args_p): Handle copy elision for types with virtual
|
||||
bases.
|
||||
* call.c (build_over_call): Likewise.
|
||||
|
||||
Sun Dec 7 22:38:12 1997 Mark Mitchell <mmitchell@usa.net>
|
||||
|
||||
* pt.c (lookup_template_function): Copy the template arguments,
|
||||
|
@ -5502,7 +5502,10 @@ build_over_call (fn, convs, args, flags)
|
||||
&& copy_args_p (fn))
|
||||
{
|
||||
tree targ;
|
||||
arg = TREE_VALUE (TREE_CHAIN (converted_args));
|
||||
arg = TREE_CHAIN (converted_args);
|
||||
if (TYPE_USES_VIRTUAL_BASECLASSES (DECL_CONTEXT (fn)))
|
||||
arg = TREE_CHAIN (arg);
|
||||
arg = TREE_VALUE (arg);
|
||||
|
||||
/* Pull out the real argument, disregarding const-correctness. */
|
||||
targ = arg;
|
||||
|
@ -10280,6 +10280,9 @@ copy_args_p (d)
|
||||
tree d;
|
||||
{
|
||||
tree t = FUNCTION_ARG_CHAIN (d);
|
||||
if (DECL_CONSTRUCTOR_P (d)
|
||||
&& TYPE_USES_VIRTUAL_BASECLASSES (DECL_CONTEXT (d)))
|
||||
t = TREE_CHAIN (t);
|
||||
if (t && TREE_CODE (TREE_VALUE (t)) == REFERENCE_TYPE
|
||||
&& (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_VALUE (t)))
|
||||
== DECL_CLASS_CONTEXT (d))
|
||||
|
Loading…
Reference in New Issue
Block a user