On Tue, Apr 5, 2011 at 2:35 AM, Andreas Schwab <sch...@redhat.com> wrote:
> Peter Bigot <big...@acm.org> writes:
>
>> I have a target that supports a "push.b x" operation that puts a byte onto
>> the stack but pre-decrements the stack pointer by 2 to maintain alignment.
>
> That looks like the same as what m68k does, see PUSH_ROUNDING.

Thanks.  In my existing machine description, PUSH_ROUNDING is already
set.  m68k is one of the three machine descriptions that explicitly
uses pushm1 instructions rather than mov expanders, regardless of
PUSH_ROUNDING.  Perhaps that's the magic; in fact, pushqi1 seems to be
the only the only variant ever implemented.

It's not that push isn't working, it's that I'm surprised that the
tree-to-rtl translation generates a RTL expression that passes
push_operand() but not the "<" constraint, but only in a case where
PUSH_ROUNDING has an effect.  I'll try to look into pushqi1 sometime,
but for now using =X seems to work fine.

Peter

Reply via email to