aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1993-03-17 15:26:25 -0700
committerJeff Law <law@gcc.gnu.org>1993-03-17 15:26:25 -0700
commit6a7d5990f4a5c2c03bce867fbf5ca2395636e794 (patch)
tree9c9e7bf01b4d0d494b886121e885c8cc7ab05020
parentd1399bd0ff3893bb9ebea7b977c7f3ec91b728b0 (diff)
downloadgcc-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
-rw-r--r--gcc/config/pa/pa.c30
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;