gnu /
gcc /
ec917e614684e7a64d468871b1efb39a9a95c94d Fix ICE on class-template argument deduction (PR c++/88795)
PR c++/88795 reports an ICE building a function_type for a deduction guide
when the substitution into the function signature fails, due to an
error_mark_node being returned from tsubst_arg_types but not being checked
for. This error_mark_node gets used as the TYPE_ARG_TYPES, leading to
ICEs in various places that assume this is a TREE_LIST.
This patch checks the result of tsubst_arg_types and propagates the failure
if it returns error_mark_node. It also adds an assertion to
build_function_type, to fail faster if passed in error_mark_node.
gcc/cp/ChangeLog:
Backport of r267957 from trunk.
2019-01-15 David Malcolm <dmalcolm@redhat.com>
PR c++/88795
* pt.c (build_deduction_guide): Bail out if tsubst_arg_types
fails.
gcc/testsuite/ChangeLog:
Backport of r267957 from trunk.
2019-01-15 David Malcolm <dmalcolm@redhat.com>
PR c++/88795
* g++.dg/template/pr88795.C: New test.
gcc/ChangeLog:
Backport of r267957 from trunk.
2019-01-15 David Malcolm <dmalcolm@redhat.com>
PR c++/88795
* tree.c (build_function_type): Assert that arg_types is not
error_mark_node.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-8-branch@268915 138bc75d-0d04-0410-961f-82ee72b054a4
6 files changed