PR c++/91378 - ICE with noexcept and auto return type.
authorJason Merrill <jason@redhat.com>
Tue, 6 Aug 2019 14:07:59 +0000 (10:07 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Tue, 6 Aug 2019 14:07:59 +0000 (10:07 -0400)
commitd40e36310722e63675d62711cad7d25393836a00
tree5780be4efd59ee7d28deecce3135aeecd8b8102d
parent1a013865bed6ae419945945e418d078bf30f8b89
PR c++/91378 - ICE with noexcept and auto return type.

Here, since the call to g is not type-dependent, we call mark_used on it to
determine its return type.  This also wants to instantiate the
noexcept-expression.  But since nothing in maybe_instantiate_noexcept was
calling push_to_top_level, we substituted b.i with processing_template_decl
set, so we left it unresolved for later access checking.  As a result, the
type of C::g<int> remained instantiation-dependent, leading to an ICE in
type_dependent_expression_p on the assert that the type of a function
template with no dependent template arguments must be non-dependent.

* pt.c (maybe_instantiate_noexcept): push_to_top_level.

From-SVN: r274143
gcc/cp/ChangeLog
gcc/cp/pt.c
gcc/testsuite/g++.dg/cpp1y/auto-fn56.C [new file with mode: 0644]