C++: Fix ICE when adding overloaded operator via using_decl (PR c++/88699)
authorDavid Malcolm <dmalcolm@redhat.com>
Thu, 17 Jan 2019 17:07:20 +0000 (17:07 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Thu, 17 Jan 2019 17:07:20 +0000 (17:07 +0000)
commitb9e03679808ef26ba9614d352f69a347df120265
tree78b273b9ec572ff1333ec21a19a2cd105bc0f1cb
parent213694e56e6265044bc85dbf43bda9028f05dba7
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.

From-SVN: r268041
gcc/cp/ChangeLog
gcc/cp/class.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/template/pr88699.C [new file with mode: 0644]