rx.md (UNSPEC_CONST): New.
authorNick Clifton <nickc@redhat.com>
Sat, 22 Jan 2011 16:05:49 +0000 (16:05 +0000)
committerNick Clifton <nickc@gcc.gnu.org>
Sat, 22 Jan 2011 16:05:49 +0000 (16:05 +0000)
commit15ba56964dee4136423c2d8534698013663fb8df
treed481aa07a94b7a8eb9d86cc2affd8fb6a5e36660
parent4618de23d8ac1c2a2c054c8120bcf02d190901d5
rx.md (UNSPEC_CONST): New.

* config/rx/rx.md (UNSPEC_CONST): New.
(deallocate_and_return): Wrap the amount popped off the stack in
an UNSPEC_CONST in order to stop it being rejected by
-mmax-constant-size.
(pop_and_return): Add a "(return)" rtx.
(call): Drop the immediate operand.
(call_internal): Likewise.
(call_value): Likewise.
(call_value_internal): Likewise.
(sibcall_internal): Likewise.
(sibcall_value_internal): Likewise.
(sibcall): Likewise.  Generate an explicit call using
sibcall_internal.
(sibcall_value): Likewise.
(mov<>): FAIL if a constant operand is not legitimate.
(addsi3_unpsec): New pattern.
* config/rx/rx.c (rx_print_operand_address): Handle UNPSEC
CONSTs.
(ok_for_max_constant): New function.
(gen_safe_add): New function.
(rx_expand_prologue): Use gen_safe_add.
(rx_expand_epilogue): Likewise.
(rx_is_legitimate_constant): Use ok_for_max_constant.  Handle
UNSPEC CONSTs.

From-SVN: r169128
gcc/ChangeLog
gcc/config/rx/rx.c
gcc/config/rx/rx.md