https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88699

--- Comment #8 from David Malcolm <dmalcolm at gcc dot gnu.org> ---
Author: dmalcolm
Date: Thu Jan 17 17:07:20 2019
New Revision: 268041

URL: https://gcc.gnu.org/viewcvs?rev=268041&root=gcc&view=rev
Log:
C++: Fix ICE when adding overloaded operator via using_decl (PR c++/88699)

PR c++/88699 reports an ICE within this assertion in add_method:

  gcc_assert (!current_fns || !DECL_DESTRUCTOR_P (method));

when adding an overloaded operator to a class via a using_decl, due to
DECL_DESTRUCTOR_P requiring a FUNCTION_DECL, but "method" being a
USING_DECL.

This patch weakens the assertion to avoid testing DECL_DESTRUCTOR_P
for the case where "via_using" is true, fixing the ICE.

gcc/cp/ChangeLog:
        PR c++/88699
        * class.c (add_method): Don't use DECL_DESTRUCTOR_P on
        USING_DECLs.

gcc/testsuite/ChangeLog:
        PR c++/88699
        * g++.dg/template/pr88699.C: New test.


Added:
    trunk/gcc/testsuite/g++.dg/template/pr88699.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/class.c
    trunk/gcc/testsuite/ChangeLog

Reply via email to