On Tue, Dec 13, 2005 at 07:44:39PM +0100, Laurent GUERBY wrote: > 2005-12-13 Jakub Jelinek <[EMAIL PROTECTED]> > > PR debug/25023 > PR target/25293 > * expr.c (emit_move_resolve_push): Handle PRE_MODIFY > and POST_MODIFY with CONST_INT adjustment equal to PUSH_ROUNDING. > Fix POST_INC/POST_DEC handling if PUSH_ROUNDING is not identity. > * config/i386/i386.md (pushhi2, pushqi2): Use pushl instead of pushw. > Set mode to SI, adjust constraints. > (pushhi2_rex64, pushqi2_rex64): Set mode to DI. > * config/i386/i386.h (PUSH_ROUNDING): Round up to 4 instead of 2 for > 32-bit code. > > Jakub, any idea? > > /scratch/gcc/libmudflap/mf-runtime.c:1032: error: unrecognizable insn: > > (insn 1385 1384 1386 31 /scratch/gcc/libmudflap/mf-runtime.c:1457 (set > > (mem:HI (pre_dec:SI (reg/f:SI 7 sp)) [0 S2 A8]) > > (reg:HI 0 ax [orig:182 __mf_lc_shift ] [182])) -1 (nil) > > (nil)) > > /scratch/gcc/libmudflap/mf-runtime.c:1032: internal compiler error: in > > extract_insn, at recog.c:2084
I can't reproduce it (otherwise I wouldn't have committed it), it bootstrapped/regtested just fine for me. Can one of those who can reproduce it give me preprocessed mf-runtime.i and exact gcc options that triggered it? It is correct that the above is rejected, but nothing should be generating it, unless it disregards PUSH_ROUNDING. Jakub