[Bug c++/78193] [7 regression] g++.dg/concepts/inherit-ctor3.C etc. FAIL at r241765
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
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
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
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
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
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.