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

--- Comment #20 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
tem was the var_decl
        /* If TEM's type is a union of variable size, pass TARGET to the inner
           computation, since it will need a temporary and TARGET is known
           to have to do.  This occurs in unchecked conversion in Ada.  */
        orig_op0 = op0
          = expand_expr_real (tem,
                              (TREE_CODE (TREE_TYPE (tem)) == UNION_TYPE
                               && COMPLETE_TYPE_P (TREE_TYPE (tem))
                               && (TREE_CODE (TYPE_SIZE (TREE_TYPE (tem)))
                                   != INTEGER_CST)
                               && modifier != EXPAND_STACK_PARM
                               ? target : NULL_RTX),
                              VOIDmode,
                              modifier == EXPAND_SUM ? EXPAND_NORMAL :
modifier,
                              NULL, true);
produces:
(gdb) p debug_rtx(op0)
(mem/c:SI (reg/f:DI 71) [1 output_len+0 S4 A32])

Note the A32 here.

So it is a bug in the expansion of the var_decl.

Reply via email to