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

            Bug ID: 116327
           Summary: ICE in coroutine with parameter preview on lambda with
                    captures.
           Product: gcc
           Version: 14.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jehelset at gmail dot com
  Target Milestone: ---

ICE from `expand_expr_real_1` in `expr.cc:11376` 

Seems to happen after 066c7893eae, in particular:

@@ -4618,13 +4618,8 @@ morph_fn_to_coro (tree orig, tree *resumer, tree
*destroyer)
          if (parm_i->this_ptr || parm_i->lambda_cobj)
            {
              /* We pass a reference to *this to the allocator lookup.  */
-             tree tt = TREE_TYPE (TREE_TYPE (arg));
-             tree this_ref = build1 (INDIRECT_REF, tt, arg);
-             tt = cp_build_reference_type (tt, false);
-             this_ref = convert_to_reference (tt, this_ref, CONV_STATIC,
-                                              LOOKUP_NORMAL , NULL_TREE,
-                                              tf_warning_or_error);
-             vec_safe_push (args, convert_from_reference (this_ref));
+             tree this_ref = cp_build_fold_indirect_ref (arg);
+             vec_safe_push (args, this_ref);
            }
          else
            vec_safe_push (args, convert_from_reference (arg));

Reply via email to