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

--- Comment #3 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
It's this change:

@@ -5660,10 +5668,12 @@ store_one_arg (struct arg_data *arg, rtx argblock, int
flags,
        }
    }

-      emit_push_insn (arg->value, arg->mode, TREE_TYPE (pval), size_rtx,
-             parm_align, partial, reg, excess, argblock,
-             ARGS_SIZE_RTX (arg->locate.offset), reg_parm_stack_space,
-             ARGS_SIZE_RTX (arg->locate.alignment_pad), false);
+      if (!CONST_INT_P (size_rtx) || INTVAL (size_rtx) != 0)
+   emit_push_insn (arg->value, arg->mode, TREE_TYPE (pval), size_rtx,
+           parm_align, partial, reg, excess, argblock,
+           ARGS_SIZE_RTX (arg->locate.offset),
+           reg_parm_stack_space,
+           ARGS_SIZE_RTX (arg->locate.alignment_pad), false);

       /* Unless this is a partially-in-register argument, the argument is now
     in the stack.

Reply via email to