------- Comment #7 from hjl at lucon dot org 2007-03-26 03:15 ------- It looks like expr.c and i386.c don't agree how to generate push instuction. i386.c has gen_push and expr.c has emit_single_push_insn. If emit_single_push_insn is called, it will generate invalid patten:
(insn 10 9 11 3 (set (reg/f:SI 64) (pre_dec:SI (reg/f:SI 7 sp))) -1 (nil) (nil)) from emit_single_push_insn in expr.c 3519 if (GET_MODE_SIZE (mode) == rounded_size) 3520 dest_addr = gen_rtx_fmt_e (STACK_PUSH_CODE, Pmode, stack_pointer_rtx); -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31344