https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79514
--- Comment #5 from Uroš Bizjak <ubizjak at gmail dot com> --- We go through: if (STACK_GROWS_DOWNWARD) /* ??? This seems wrong if STACK_PUSH_CODE == POST_DEC. */ dest_addr = gen_rtx_PLUS (Pmode, stack_pointer_rtx, gen_int_mode (-(HOST_WIDE_INT) rounded_size, Pmode)); else /* ??? This seems wrong if STACK_PUSH_CODE == POST_INC. */ dest_addr = gen_rtx_PLUS (Pmode, stack_pointer_rtx, gen_int_mode (rounded_size, Pmode)); dest_addr = gen_rtx_PRE_MODIFY (Pmode, stack_pointer_rtx, dest_addr); Maybe we should use our own pushxf expander?