This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch] Make h8300 port build again in mainline
- To: Kazu Hirata <kazu at hxi dot com>
- Subject: Re: [patch] Make h8300 port build again in mainline
- From: law at redhat dot com
- Date: Mon, 16 Jul 2001 10:31:58 -0600
- cc: gcc-patches at gcc dot gnu dot org
- Reply-To: law at redhat dot com
In message <200107120129.SAA22548@cygnus.com>you write:
> Hi,
>
> Attached is a patch to make the h8300 port build again in the
> mainline.
>
> PUSH_ROUNDING in the h8300 port tells us to push a multiple of 2 bytes
> on H8/300 and a multiple of 4 bytes on H8/300H and H8/S. Originally,
> movqi_push and movhi_push patterns had the predecrement constraint
> '<', preventing the pre_modify stuff from being recognized.
>
> The patch removes movqi_push and movhi_push because their names are
> never used. (emit_single_push_insn in expr.c builds a push operand
> from ground up.) Instead, the patch adds three new patterns that
> explicitly accept the pre_modify stuff. Two of them are in QImode,
> the other in HImode. Note that we do not need another pattern for a
> HImode push on H8/300 because the regular movhi pattern takes care of
> that case. For the same reason, we do not need any special pattern
> for a SImode push.
>
> One more note. I changed the attribute from set_znv to clobber
> because, in case of a QImode push on H8/300, we are pushing two bytes
> even though we are asked to push only one byte. I did not see any
> difference in the resulting code by this change, but I'd rather be
> safe.
>
> Thanks,
>
> Kazu Hirata
>
> 2001-07-11 Kazu Hirata <kazu@hxi.com>
>
> * config/h8300/h8300.md (movqi_push): Remove and replace with two
> unnamed patterns using pre_modify.
> (movhi_push): Remove and replace with an unnamed patterns using
> pre_modify.
We've generally avoided having these embedded side effect expressions
explicitly used in md files. I don't recall the precise reasons, but
without some hard information as to why it's a good idea and should be
safe, I'd like to stick with the convention that we don't allow these
expressions.
Instead if you need them, test for them in a foo_operand function, then
use foo_operand in the md file.
Better yet, merge them into the existing movqi/movhi patterns.
jeff