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

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

https://gcc.gnu.org/g:493035c8780cd510a680a791d0c7f94368164352

commit r14-10461-g493035c8780cd510a680a791d0c7f94368164352
Author: Marek Polacek <pola...@redhat.com>
Date:   Thu Jul 11 15:57:43 2024 -0400

    eh: ICE with std::initializer_list and ASan [PR115865]

    Here we ICE with -fsanitize=address on

      std::initializer_list x = { 1, 2, 3 };

    since r14-8681, which removed .ASAN_MARK calls on TREE_STATIC variables.
    That means that lower_try_finally now instead of

      try
        {
          .ASAN_MARK (UNPOISON, &C.0, 12);
          x = {};
          x._M_len = 3;
          x._M_array = &C.0;
        }
      finally
        {
          .ASAN_MARK (POISON, &C.0, 12);
        }

    gets:

      try
        {
          x = {};
          x._M_len = 3;
          x._M_array = &C.0;
        }
      finally
        {

        }

    and we ICE on the empty finally in lower_try_finally_onedest while
    getting get_eh_else.

            PR c++/115865

    gcc/ChangeLog:

            * tree-eh.cc (get_eh_else): Check that the result of
            gimple_seq_first_stmt is non-null.

    gcc/testsuite/ChangeLog:

            * g++.dg/asan/initlist2.C: New test.

    Co-authored-by: Jakub Jelinek  <ja...@redhat.com>
    (cherry picked from commit 1e60a6abfece40c7bf55d6ca0a439078d3f5159a)

Reply via email to