diff options
author | Jeff Law <law@gcc.gnu.org> | 1993-03-17 15:26:25 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1993-03-17 15:26:25 -0700 |
commit | 6a7d5990f4a5c2c03bce867fbf5ca2395636e794 (patch) | |
tree | 9c9e7bf01b4d0d494b886121e885c8cc7ab05020 /gcc | |
parent | d1399bd0ff3893bb9ebea7b977c7f3ec91b728b0 (diff) | |
download | gcc-6a7d5990f4a5c2c03bce867fbf5ca2395636e794.zip gcc-6a7d5990f4a5c2c03bce867fbf5ca2395636e794.tar.gz gcc-6a7d5990f4a5c2c03bce867fbf5ca2395636e794.tar.bz2 |
pa.c (post_cint_operand): New function.
* pa.c (post_cint_operand): New function.
(hppa-can_use_return_insn_p): Newfunction.
From-SVN: r3771
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/pa/pa.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index 7675f4d..b99be99 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -301,6 +301,8 @@ arith11_operand (op, mode) || (GET_CODE (op) == CONST_INT && INT_11_BITS (op))); } +/* A constant integer suitable for use in a PRE_MODIFY memory + reference. */ int pre_cint_operand (op, mode) rtx op; @@ -310,6 +312,17 @@ pre_cint_operand (op, mode) && INTVAL (op) >= -0x2000 && INTVAL (op) < 0x10); } +/* A constant integer suitable for use in a POST_MODIFY memory + reference. */ +int +post_cint_operand (op, mode) + rtx op; + enum machine_mode mode; +{ + return (GET_CODE (op) == CONST_INT + && INTVAL (op) < 0x2000 && INTVAL (op) >= -0x10); +} + int arith_double_operand (op, mode) rtx op; @@ -2063,6 +2076,23 @@ eligible_for_epilogue_delay (trial, slot) return (get_attr_in_branch_delay (trial) == IN_BRANCH_DELAY_TRUE); } +/* This is only valid once reload has completed because it depends on + knowing exactly how much (if any) frame there is and... + + It's only valid if there is no frame marker to de-allocate and... + + It's only valid if %r2 hasn't been saved into the caller's frame + (we're not profiling and %r2 isn't live anywhere). */ +int +hppa_can_use_return_insn_p () +{ + return (reload_completed + && (compute_frame_size (get_frame_size (), 0) ? 0 : 1) + && ! profile_flag + && ! regs_ever_live[2] + && ! frame_pointer_needed); +} + void emit_bcond_fp (code, operand0) enum rtx_code code; |