https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112437

--- Comment #3 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Marek Polacek <mpola...@gcc.gnu.org>:

https://gcc.gnu.org/g:65b105b4f399559685200e1598ead8c7d0935c04

commit r14-8697-g65b105b4f399559685200e1598ead8c7d0935c04
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.

Reply via email to