[Bug c++/78193] [7 regression] g++.dg/concepts/inherit-ctor3.C etc. FAIL at r241765

2016-11-17 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78193

--- Comment #6 from Jason Merrill  ---
Author: jason
Date: Thu Nov 17 22:40:28 2016
New Revision: 242573

URL: https://gcc.gnu.org/viewcvs?rev=242573&root=gcc&view=rev
Log:
PR c++/78193 - inherited ctor regressions on sparc32.

* call.c (build_over_call): Don't set CALL_FROM_THUNK_P here.
(build_call_a): Set it here, and don't insert EMPTY_CLASS_EXPR.
(convert_like_real) [ck_rvalue]: Also pass non-addressable
types along directly.

Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/call.c

[Bug c++/78193] [7 regression] g++.dg/concepts/inherit-ctor3.C etc. FAIL at r241765

2016-11-17 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78193

Jason Merrill  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #5 from Jason Merrill  ---
Fixed.

[Bug c++/78193] [7 regression] g++.dg/concepts/inherit-ctor3.C etc. FAIL at r241765

2016-11-17 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78193

Jason Merrill  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |jason at gcc dot gnu.org

[Bug c++/78193] [7 regression] g++.dg/concepts/inherit-ctor3.C etc. FAIL at r241765

2016-11-15 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78193

Eric Botcazou  changed:

   What|Removed |Added

   Severity|normal  |major

[Bug c++/78193] [7 regression] g++.dg/concepts/inherit-ctor3.C etc. FAIL at r241765

2016-11-09 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78193

--- Comment #4 from Eric Botcazou  ---
> This looks related to the ABI and was introduced by:
> 
> r241765 | jason | 2016-11-02 02:50:29 +0100 (Wed, 02 Nov 2016) | 53 lines
> 
> Implement P0136R1, Rewording inheriting constructors.

The problem comes from build_over_call:

  if (current_function_decl
  && flag_new_inheriting_ctors
  && DECL_INHERITED_CTOR (current_function_decl)
  && cand->num_convs)
/* Don't introduce copies when passing arguments along to the inherited
   constructor.  */
CALL_FROM_THUNK_P (call) = true;

For the inherited constructor:

B::B(moveonly) [inherited from A] (struct B * const this, struct moveonly
D.1999)
{
  struct moveonly D.2080;
  struct moveonly D.2053;

  :
  A::A (this_2(D), D.2080);
  return;

}

D.2080 is passed indirectly in the call but was not initially TREE_ADDRESSABLE
so its RTL was already set to a REG before mark_addressable is invoked on it.

On the contrary, when CALL_FROM_THUNK_P is not set, a stack temporary is built
and passed in the call instead, which is naturally addressable.

[Bug c++/78193] [7 regression] g++.dg/concepts/inherit-ctor3.C etc. FAIL at r241765

2016-11-08 Thread ebotcazou at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78193

Eric Botcazou  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2016-11-08
 Ever confirmed|0   |1

--- Comment #3 from Eric Botcazou  ---
This looks related to the ABI and was introduced by:

r241765 | jason | 2016-11-02 02:50:29 +0100 (Wed, 02 Nov 2016) | 53 lines

Implement P0136R1, Rewording inheriting constructors.