summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2004-08-25 19:37:41 -0700
committerRichard Henderson <rth@gcc.gnu.org>2004-08-25 19:37:41 -0700
commit04886dc0ea22ed6b5acc56ab12e36f24e5d4403f (patch)
tree4493ffdccbdfc07441d16317b3bc1644026e8918
parent4166ef51592d1c1759ce7150988a609aecb0710f (diff)
downloadgcc-04886dc0ea22ed6b5acc56ab12e36f24e5d4403f.tar.gz
alpha.c (alpha_cannot_force_const_mem): New.
* config/alpha/alpha.c (alpha_cannot_force_const_mem): New. (TARGET_CANNOT_FORCE_CONST_MEM): New. From-SVN: r86602
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/alpha/alpha.c13
2 files changed, 18 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fe284a98968..3dcb8338104 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-08-25 Richard Henderson <rth@redhat.com>
+
+ * config/alpha/alpha.c (alpha_cannot_force_const_mem): New.
+ (TARGET_CANNOT_FORCE_CONST_MEM): New.
+
2004-08-25 Andrew MacLeod <amacleod@redhat.com>
* doc/tree-ssa.texi: Document new operand iterator.
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index c6d93446a84..1e2b8dad1d1 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -1180,6 +1180,17 @@ alpha_legitimize_address (rtx x, rtx scratch,
}
}
+/* Primarily this is required for TLS symbols, but given that our move
+ patterns *ought* to be able to handle any symbol at any time, we
+ should never be spilling symbolic operands to the constant pool, ever. */
+
+static bool
+alpha_cannot_force_const_mem (rtx x)
+{
+ enum rtx_code code = GET_CODE (x);
+ return code == SYMBOL_REF || code == LABEL_REF || code == CONST;
+}
+
/* We do not allow indirect calls to be optimized into sibling calls, nor
can we allow a call to a function with a different GP to be optimized
into a sibcall. */
@@ -9357,6 +9368,8 @@ alpha_init_libfuncs (void)
#define TARGET_FUNCTION_OK_FOR_SIBCALL alpha_function_ok_for_sibcall
#undef TARGET_CANNOT_COPY_INSN_P
#define TARGET_CANNOT_COPY_INSN_P alpha_cannot_copy_insn_p
+#undef TARGET_CANNOT_FORCE_CONST_MEM
+#define TARGET_CANNOT_FORCE_CONST_MEM alpha_cannot_force_const_mem
#if TARGET_ABI_OSF
#undef TARGET_ASM_OUTPUT_MI_THUNK