[patches] Re: PRE_DEC/PUSH_ROUNDING inconsistency fix
Jan Hubicka
jh@suse.cz
Wed Nov 8 05:56:00 GMT 2000
> On Sat, Nov 04, 2000 at 10:42:39AM +0100, Jan Hubicka wrote:
> > The patch changes the representation of push_operands of such
> > instructions from
> > (mem:M (pre_dec:P (stack)))
> > to
> > (mem:M (pre_modify (stack) (plus:P (stack) (const_int amount))))
> >
> > The push_operand/pop_operand are modified to accept such representation.
>
> While in general I imagine this is a good change to make,
> you'll need to make sure that all the targets that use
> PUSH_ROUNDING still work.
To be more specific, here is how I've checked the backends by hand.
Only following backends have non-trivial PUSH_ROUDNING possibly driving
gcc to use the new representation:
./convex/convex.h:#define PUSH_ROUNDING(BYTES) (((BYTES) + 4) & ~3)
Use PUSH_ROUDNING + PROMOTE_PROTOTYPES having only SImode push operand..
./h8300/h8300.h:#define PUSH_ROUNDING(BYTES) \
Possibly problematic - having QI mode push really pushing HImode, don't seems
to rely on the push_operand representation so can be OK.
./i386/i386.h:#define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & (-2))
PUSH_ROUDNING+PROMOTE_PROTOTYPES... OK.
./m68k/m68k.h:#define PUSH_ROUNDING(BYTES) (TARGET_5200 ? BYTES : ((BYTES) + 1) & ~1)
Likewise.
./pdp11/pdp11.h:#define PUSH_ROUNDING(BYTES) ((BYTES + 1) & ~1)
Possibly problematic, checked by hand by pushing char and seems to work.
./pj/pj.h:#define PUSH_ROUNDING(NPUSHED) (((NPUSHED) + 3) & ~3)
PUSH_ROUNDING+PROMOTE_PROTOTYPES OK...
./sh/sh.h:#define PUSH_ROUNDING(NPUSHED) (((NPUSHED) + 3) & ~3)
PUSH_ROUNDING is #if 0ed. Use PROMOTE_PROTOTYPES OK.
./we32k/we32k.h:#define PUSH_ROUNDING(BYTES) (((BYTES) + 3) & ~3)
PUSH_ROUNDING+PROMOTE_PROTOTYPES OK...
Honza
More information about the Gcc-patches
mailing list