https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91378
--- Comment #1 from Jason Merrill <jason at gcc dot gnu.org> --- Author: jason Date: Tue Aug 6 14:07:59 2019 New Revision: 274143 URL: https://gcc.gnu.org/viewcvs?rev=274143&root=gcc&view=rev Log: 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. Added: trunk/gcc/testsuite/g++.dg/cpp1y/auto-fn56.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/pt.c