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

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

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

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The problem is that apply_deduced_return_type
has
  if (!processing_template_decl)
    if (function *fun = DECL_STRUCT_FUNCTION (fco))
      {
        bool aggr = aggregate_value_p (result, fco);
#ifdef PCC_STATIC_STRUCT_RETURN
        fun->returns_pcc_struct = aggr;
#endif
        fun->returns_struct = aggr;
      }
In the above testcase, apply_deduced_return_type is called when parsing the
expansion stmt body, which is done with processing_template_decl.  When
actually instantiating
the body, check_return_expr is called again but as the auto type has been
resolved by then, apply_deduced_return_type is not called again and so
fun->returns_{,pcc_}struct
remains to be incorrectly set.
Bet the !processing_template_decl here is meant as a shorthand for
!decl_dependent_p (current_function_decl).
  • [Bug c++/121583] New: ICE... andrey.davydov at jetbrains dot com via Gcc-bugs
    • [Bug c++/121583] ICE... jakub at gcc dot gnu.org via Gcc-bugs

Reply via email to