https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112437
--- Comment #5 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-12 branch has been updated by Marek Polacek <mpola...@gcc.gnu.org>: https://gcc.gnu.org/g:4617c9b6eb22062a319dcdbddb8c3cebce398c15 commit r12-10124-g4617c9b6eb22062a319dcdbddb8c3cebce398c15 Author: Marek Polacek <pola...@redhat.com> Date: Wed Jan 31 17:33:26 2024 -0500 c++: ICE with throw inside concept [PR112437] We crash in the loop at the end of treat_lvalue_as_rvalue_p for code like template <class T> concept Throwable = requires(T x) { throw x; }; because the code assumes that we eventually reach sk_function_parms or sk_try and bail, but in a concept we're in a sk_namespace. We're already checking sk_try so we don't crash in a function-try-block, but I've added a test anyway. PR c++/112437 gcc/cp/ChangeLog: * typeck.cc (treat_lvalue_as_rvalue_p): Bail out on sk_namespace in the move on throw of parms loop. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/concepts-throw1.C: New test. * g++.dg/eh/throw4.C: New test. (cherry picked from commit 65b105b4f399559685200e1598ead8c7d0935c04)