public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/116793] New: ice in gimplify_var_or_parm_decl, at gimplify.cc:3309
@ 2024-09-20 20:13 dcb314 at hotmail dot com
  2024-09-20 20:34 ` [Bug c++/116793] " mpolacek at gcc dot gnu.org
                   ` (8 more replies)
  0 siblings, 9 replies; 10+ messages in thread
From: dcb314 at hotmail dot com @ 2024-09-20 20:13 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 116793
           Summary: ice in gimplify_var_or_parm_decl, at gimplify.cc:3309
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dcb314 at hotmail dot com
  Target Milestone: ---

Created attachment 59165
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59165&action=edit
gzipped C++ source code

The attached code does this

$ /home/dcb40b/gcc/results.20240909.asan.ubsan/bin/g++ -c -w -std=gnu++20
bug1049.cc
/home/dcb40b/rpmbuild/BUILD/libunifex-0.4.0/test/at_coroutine_exit_test.cpp: In
function ‘void
{anonymous}::AtCoroutineExit::test_mutable_stateful_cleanup_action(_ZN12_GLOBAL__N_115AtCoroutineExit36test_mutable_stateful_cleanup_actionEv.Frame*)’:
/home/dcb40b/rpmbuild/BUILD/libunifex-0.4.0/test/at_coroutine_exit_test.cpp:77:11:
internal compiler error: in gimplify_var_or_parm_decl, at gimplify.cc:3309
   77 |       }, 3);
      |           ^

It used to work with 20240906. The git hashes are g:6a1a856ba78589f7
and g:39a01fcf24676a27.

I have a reduction running.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug c++/116793] ice in gimplify_var_or_parm_decl, at gimplify.cc:3309
  2024-09-20 20:13 [Bug c++/116793] New: ice in gimplify_var_or_parm_decl, at gimplify.cc:3309 dcb314 at hotmail dot com
@ 2024-09-20 20:34 ` mpolacek at gcc dot gnu.org
  2024-09-20 21:49 ` dcb314 at hotmail dot com
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2024-09-20 20:34 UTC (permalink / raw)
  To: gcc-bugs

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

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2024-09-20
             Status|UNCONFIRMED                 |NEW
                 CC|                            |mpolacek at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Seems to have started with r15-3513:

commit 964577c31df206d780d5cc7bc07189d44de2719e
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Fri Sep 6 13:50:47 2024 +0200

    c++: Partially implement CWG 2867 - Order of initialization for structured
bindings [PR115769]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug c++/116793] ice in gimplify_var_or_parm_decl, at gimplify.cc:3309
  2024-09-20 20:13 [Bug c++/116793] New: ice in gimplify_var_or_parm_decl, at gimplify.cc:3309 dcb314 at hotmail dot com
  2024-09-20 20:34 ` [Bug c++/116793] " mpolacek at gcc dot gnu.org
@ 2024-09-20 21:49 ` dcb314 at hotmail dot com
  2024-09-20 22:18 ` [Bug c++/116793] [15 regression] ice in gimplify_var_or_parm_decl, at gimplify.cc:3309 since r15-3513 pinskia at gcc dot gnu.org
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: dcb314 at hotmail dot com @ 2024-09-20 21:49 UTC (permalink / raw)
  To: gcc-bugs

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

David Binderman <dcb314 at hotmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |dcb314 at hotmail dot com

--- Comment #2 from David Binderman <dcb314 at hotmail dot com> ---
Created attachment 59166
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59166&action=edit
gzipped C++ source code

After more than an hour of cvise, I attach the
partially reduced source code.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug c++/116793] [15 regression] ice in gimplify_var_or_parm_decl, at gimplify.cc:3309 since r15-3513
  2024-09-20 20:13 [Bug c++/116793] New: ice in gimplify_var_or_parm_decl, at gimplify.cc:3309 dcb314 at hotmail dot com
  2024-09-20 20:34 ` [Bug c++/116793] " mpolacek at gcc dot gnu.org
  2024-09-20 21:49 ` dcb314 at hotmail dot com
@ 2024-09-20 22:18 ` pinskia at gcc dot gnu.org
  2024-09-21  1:10 ` pinskia at gcc dot gnu.org
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: pinskia at gcc dot gnu.org @ 2024-09-20 22:18 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Reducing this further.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug c++/116793] [15 regression] ice in gimplify_var_or_parm_decl, at gimplify.cc:3309 since r15-3513
  2024-09-20 20:13 [Bug c++/116793] New: ice in gimplify_var_or_parm_decl, at gimplify.cc:3309 dcb314 at hotmail dot com
                   ` (2 preceding siblings ...)
  2024-09-20 22:18 ` [Bug c++/116793] [15 regression] ice in gimplify_var_or_parm_decl, at gimplify.cc:3309 since r15-3513 pinskia at gcc dot gnu.org
@ 2024-09-21  1:10 ` pinskia at gcc dot gnu.org
  2024-09-21  1:10 ` pinskia at gcc dot gnu.org
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: pinskia at gcc dot gnu.org @ 2024-09-21  1:10 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Created attachment 59167
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59167&action=edit
Semi reduced with some includes added back

This is the best I could get but I decided to add back tuple and coroutine
headers since I could not get rid of the depedency on std::tuple<Ts &> there.
I tried a normal struct but you need the std::get and friends really otherwise
it would just work it seems.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug c++/116793] [15 regression] ice in gimplify_var_or_parm_decl, at gimplify.cc:3309 since r15-3513
  2024-09-20 20:13 [Bug c++/116793] New: ice in gimplify_var_or_parm_decl, at gimplify.cc:3309 dcb314 at hotmail dot com
                   ` (3 preceding siblings ...)
  2024-09-21  1:10 ` pinskia at gcc dot gnu.org
@ 2024-09-21  1:10 ` pinskia at gcc dot gnu.org
  2024-09-21  1:22 ` pinskia at gcc dot gnu.org
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: pinskia at gcc dot gnu.org @ 2024-09-21  1:10 UTC (permalink / raw)
  To: gcc-bugs

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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|needs-reduction             |
   Target Milestone|---                         |15.0

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug c++/116793] [15 regression] ice in gimplify_var_or_parm_decl, at gimplify.cc:3309 since r15-3513
  2024-09-20 20:13 [Bug c++/116793] New: ice in gimplify_var_or_parm_decl, at gimplify.cc:3309 dcb314 at hotmail dot com
                   ` (4 preceding siblings ...)
  2024-09-21  1:10 ` pinskia at gcc dot gnu.org
@ 2024-09-21  1:22 ` pinskia at gcc dot gnu.org
  2024-09-21  9:05 ` jakub at gcc dot gnu.org
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: pinskia at gcc dot gnu.org @ 2024-09-21  1:22 UTC (permalink / raw)
  To: gcc-bugs

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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #59167|0                           |1
        is obsolete|                            |

--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Created attachment 59168
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59168&action=edit
Semi reduced with some includes added back

Like the previous but removal of the un-needed templates.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug c++/116793] [15 regression] ice in gimplify_var_or_parm_decl, at gimplify.cc:3309 since r15-3513
  2024-09-20 20:13 [Bug c++/116793] New: ice in gimplify_var_or_parm_decl, at gimplify.cc:3309 dcb314 at hotmail dot com
                   ` (5 preceding siblings ...)
  2024-09-21  1:22 ` pinskia at gcc dot gnu.org
@ 2024-09-21  9:05 ` jakub at gcc dot gnu.org
  2024-09-21 19:44 ` dcb314 at hotmail dot com
  2024-09-25  9:29 ` sjames at gcc dot gnu.org
  8 siblings, 0 replies; 10+ messages in thread
From: jakub at gcc dot gnu.org @ 2024-09-21  9:05 UTC (permalink / raw)
  To: gcc-bugs

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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |iains at gcc dot gnu.org

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Looks like coro lowering bug to me.  The ICE is on Aw0 VAR_DECL which is indeed
used before its declaration:
      {
        struct tuple & D.12700 [value-expr: frame_ptr->_D1_2_0];
        int & i [value-expr: frame_ptr->i_1_2];
        struct tuple D.14203 [value-expr: frame_ptr->_D1_2_1];

                struct tuple D.14203 [value-expr: frame_ptr->_D1_2_1];
                struct tuple & D.12700 [value-expr: frame_ptr->_D1_2_0];
        TARGET_EXPR <D.14220, 0>;
        if (<<cleanup_point !C::await_ready (&Aw0)>>)
          {
            <<cleanup_point <<< Unknown tree: expr_stmt
              (void) (_Coro_resume_index = 4) >>>>>;
            if (<<cleanup_point !C::await_suspend<T::promise_type> (&Aw0,
TARGET_EXPR <D.12788, _Coro_self_handle>)>>)
              {
                <<cleanup_point <<< Unknown tree: expr_stmt
                  .CO_SUSPN (&coro.restart.dispatch) >>>>>;
              }
            switch (<<cleanup_point .CO_YIELD (4, 0, &resume.4, &destroy.4,
frame_ptr)>>)
              {
                case 0:;
                <<cleanup_point <<< Unknown tree: expr_stmt
                  .CO_SUSPN (&actor.suspend.ret) >>>>>;
                case 1:;
                goto resume.4;
                default:;
                goto destroy.4;
              }
            destroy.4:;
            goto coro.delete.promise;
          }
        resume.4:;
        <<cleanup_point {
          struct C Aw0 [value-expr: frame_ptr->Aw0_2_3];
          int T002 [value-expr: frame_ptr->T002_2_3];

                    int T002 [value-expr: frame_ptr->T002_2_3];

All my patch changed is that instead of having one CLEANUP_POINT_EXPR around
the initialization of the unnamed structured binding
base variable and another one around the i there is one around the latter and
one around all that together, i.e. roughly
  <<cleanup_point <<< Unknown tree: expr_stmt
    (void) (D.12700 = D.14203 = <<< Unknown tree: co_await
      TARGET_EXPR <D.12704, func ((int &) &TARGET_EXPR <D.12703, 3>)>
      Aw0
      Aw0 = TARGET_EXPR <D.12704, func ((int &) &TARGET_EXPR <D.12703, 3>)>
      {C::await_ready (&Aw0), C::await_suspend<T::promise_type> (&Aw0,
TARGET_EXPR <D.12788, _Coro_self_handle>), <<< Unknown tree: aggr_init_expr
        4
        await_resume
        D.14196
        &Aw0 >>>}
      0 >>>, (struct tuple &) &D.14203) >>>;
  D.14220 = 1;>>;
    int & i;
  <<cleanup_point <<< Unknown tree: expr_stmt
    (void) (i = std::get<0, int&> (NON_LVALUE_EXPR <D.12700>)) >>>>>;
to:
  <<cleanup_point <<< Unknown tree: expr_stmt
    (void) (D.12700 = D.14203 = <<< Unknown tree: co_await
      TARGET_EXPR <D.12704, func ((int &) &TARGET_EXPR <D.12703, 3>)>
      Aw0
      Aw0 = TARGET_EXPR <D.12704, func ((int &) &TARGET_EXPR <D.12703, 3>)>
      {C::await_ready (&Aw0), C::await_suspend<T::promise_type> (&Aw0,
TARGET_EXPR <D.12788, _Coro_self_handle>), <<< Unknown tree: aggr_init_expr
        4
        await_resume
        D.14196
        &Aw0 >>>}
      0 >>>, (struct tuple &) &D.14203) >>>;
  D.14220 = 1;
    int & i;
  <<cleanup_point <<< Unknown tree: expr_stmt
    (void) (i = std::get<0, int&> (NON_LVALUE_EXPR <D.12700>)) >>>>>;>>;
and (some of the) cleanups on the outer one need to wait until a helper var (I
think D.14220 in this case) is set.

I know really nothing about coroutines.cc to find out what needs to be changed.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug c++/116793] [15 regression] ice in gimplify_var_or_parm_decl, at gimplify.cc:3309 since r15-3513
  2024-09-20 20:13 [Bug c++/116793] New: ice in gimplify_var_or_parm_decl, at gimplify.cc:3309 dcb314 at hotmail dot com
                   ` (6 preceding siblings ...)
  2024-09-21  9:05 ` jakub at gcc dot gnu.org
@ 2024-09-21 19:44 ` dcb314 at hotmail dot com
  2024-09-25  9:29 ` sjames at gcc dot gnu.org
  8 siblings, 0 replies; 10+ messages in thread
From: dcb314 at hotmail dot com @ 2024-09-21 19:44 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #7 from David Binderman <dcb314 at hotmail dot com> ---
Created attachment 59172
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59172&action=edit
gzipped C++ source code

A second test case. It crashes in the same place as
the first. Both are from package libunifex in Fedora Rawhide.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug c++/116793] [15 regression] ice in gimplify_var_or_parm_decl, at gimplify.cc:3309 since r15-3513
  2024-09-20 20:13 [Bug c++/116793] New: ice in gimplify_var_or_parm_decl, at gimplify.cc:3309 dcb314 at hotmail dot com
                   ` (7 preceding siblings ...)
  2024-09-21 19:44 ` dcb314 at hotmail dot com
@ 2024-09-25  9:29 ` sjames at gcc dot gnu.org
  8 siblings, 0 replies; 10+ messages in thread
From: sjames at gcc dot gnu.org @ 2024-09-25  9:29 UTC (permalink / raw)
  To: gcc-bugs

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

Sam James <sjames at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |sjames at gcc dot gnu.org

--- Comment #8 from Sam James <sjames at gcc dot gnu.org> ---
I suspect we're hitting this in qcoro now too.

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2024-09-25  9:29 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-09-20 20:13 [Bug c++/116793] New: ice in gimplify_var_or_parm_decl, at gimplify.cc:3309 dcb314 at hotmail dot com
2024-09-20 20:34 ` [Bug c++/116793] " mpolacek at gcc dot gnu.org
2024-09-20 21:49 ` dcb314 at hotmail dot com
2024-09-20 22:18 ` [Bug c++/116793] [15 regression] ice in gimplify_var_or_parm_decl, at gimplify.cc:3309 since r15-3513 pinskia at gcc dot gnu.org
2024-09-21  1:10 ` pinskia at gcc dot gnu.org
2024-09-21  1:10 ` pinskia at gcc dot gnu.org
2024-09-21  1:22 ` pinskia at gcc dot gnu.org
2024-09-21  9:05 ` jakub at gcc dot gnu.org
2024-09-21 19:44 ` dcb314 at hotmail dot com
2024-09-25  9:29 ` sjames at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).