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

Jason Merrill <jason at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jason at gcc dot gnu.org
      Known to work|                            |15.0
            Summary|[12/13/14/15 Regression]    |[12/13/14 Regression]
                   |[coroutines] Use of         |[coroutines] Use of
                   |<retval> triggers an ICE on |<retval> triggers an ICE on
                   |sparc                       |sparc

--- Comment #7 from Jason Merrill <jason at gcc dot gnu.org> ---
Fixed for GCC 15 so far.  The ramp generation is completely different in
earlier versions, the code that would need to change in 14 and below is in
morph_fn_to_coro:

    /* [dcl.fct.def.coroutine] / 7                                              
        The expression promise.get_return_object() is used to initialize the    
        glvalue result or... (see below)                                        
        Construct the return result directly.  */
      if (type_build_ctor_call (gro_type))
        {
          vec<tree, va_gc> *arg = make_tree_vector_single (get_ro);
          r = build_special_member_call (DECL_RESULT (orig),
                                         complete_ctor_identifier,
                                         &arg, gro_type, LOOKUP_NORMAL,
                                         tf_warning_or_error);
          release_tree_vector (arg);
        }
      else
        r = cp_build_init_expr (fn_start, DECL_RESULT (orig), get_ro);

Reply via email to