[Bug c++/84447] [8 Regression] ICE with inherited deleted constructor and default argument

2018-02-26 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84447

Jason Merrill  changed:

   What|Removed |Added

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

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

[Bug c++/84447] [8 Regression] ICE with inherited deleted constructor and default argument

2018-02-26 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84447

--- Comment #3 from Jason Merrill  ---
Author: jason
Date: Mon Feb 26 17:06:07 2018
New Revision: 258003

URL: https://gcc.gnu.org/viewcvs?rev=258003=gcc=rev
Log:
PR c++/84447 - ICE with deleted inherited ctor with default arg.

* call.c (build_over_call): Handle deleted functions in one place.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/inh-ctor31.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/call.c

[Bug c++/84447] [8 Regression] ICE with inherited deleted constructor and default argument

2018-02-26 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84447

Jason Merrill  changed:

   What|Removed |Added

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

[Bug c++/84447] [8 Regression] ICE with inherited deleted constructor and default argument

2018-02-23 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84447

--- Comment #2 from Jakub Jelinek  ---
My understanding is that this is because cand->fn in this case (the B ctor) is
not DECL_DELETED_FN, but strip_inheriting_ctors (cand->fn) is, we somehow
haven't tried to instantiate it (bailed early) and when we get into
convert_default_arg, we try it with the non-instantiated A(T, T = 0) rather
than
with A(T, T = 0) [with T = int].  Returning error_mark_node from
convert_default_arg in that case doesn't work though, because the bug is not
diagnosed at all.

[Bug c++/84447] [8 Regression] ICE with inherited deleted constructor and default argument

2018-02-21 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84447

Jakub Jelinek  changed:

   What|Removed |Added

   Priority|P3  |P1

[Bug c++/84447] [8 Regression] ICE with inherited deleted constructor and default argument

2018-02-19 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84447

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org,
   ||jason at gcc dot gnu.org
   Target Milestone|--- |8.0

[Bug c++/84447] [8 Regression] ICE with inherited deleted constructor and default argument

2018-02-18 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84447

Martin Sebor  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-02-18
 CC||msebor at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Martin Sebor  ---
Confirmed.  Bisected to r251422 (gcc 8.0.0):

r251422 | jason | 2017-08-29 15:40:08 -0400 (Tue, 29 Aug 2017) | 10 lines

Instantiate default arguments/member initializers once.

Prior to that GCC errors out with:

t.C:11:6: error: use of deleted function ‘B::B(T, T) [with T = int][inherited
from A]’
 B b(0);
  ^
t.C:8:12: note: ‘B::B(T, T) [with T = int][inherited from A]’ is implicitly
deleted because the default definition would be ill-formed:
   using A::A;
^
t.C:8:12: error: use of deleted function ‘A::A(T, T) [with T = int]’
t.C:3:24: note: declared here
   template A(T, T = 0) = delete;
^