]> git.ipfire.org Git - thirdparty/gcc.git/commit
C++: Fix ICE when adding overloaded operator via using_decl (PR c++/88699)
authordmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Jan 2019 17:07:20 +0000 (17:07 +0000)
committerdmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Jan 2019 17:07:20 +0000 (17:07 +0000)
commit098cc8f005887e572efe69a476951c8434ca46d9
tree78b273b9ec572ff1333ec21a19a2cd105bc0f1cb
parenta4e7e06172202194e99791f55f4824445edd9e85
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@268041 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/cp/ChangeLog
gcc/cp/class.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/template/pr88699.C [new file with mode: 0644]