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