summaryrefslogtreecommitdiff
path: root/gcc/config/c4x/c4x.c
diff options
context:
space:
mode:
authorm.hayes <m.hayes@138bc75d-0d04-0410-961f-82ee72b054a4>2004-01-26 00:40:05 +0000
committerm.hayes <m.hayes@138bc75d-0d04-0410-961f-82ee72b054a4>2004-01-26 00:40:05 +0000
commit635a078f08c4a00f83976f47362b314fc0e2c305 (patch)
treeac3b71ef804718c26db47d1f8b9f98753b2efa7c /gcc/config/c4x/c4x.c
parent1b82ab1639138e18b6059708d90898bcaf307caf (diff)
downloadgcc-635a078f08c4a00f83976f47362b314fc0e2c305.tar.gz
* config/c4x/c4x.c (c4x_legitimate_address_p): Invalidate direct
memory references if TARGET_EXPOSE_LDP nonzero. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@76611 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/c4x/c4x.c')
-rw-r--r--gcc/config/c4x/c4x.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/config/c4x/c4x.c b/gcc/config/c4x/c4x.c
index db350cee080..9a6b88832e1 100644
--- a/gcc/config/c4x/c4x.c
+++ b/gcc/config/c4x/c4x.c
@@ -1236,10 +1236,11 @@ c4x_emit_move_sequence (rtx *operands, enum machine_mode mode)
&& dp_reg_operand (XEXP (op1, 0), mode))
{
/* expand_increment will sometimes create a LO_SUM immediate
- address. */
+ address. Undo this sillyness. */
op1 = XEXP (op1, 1);
}
- else if (symbolic_address_operand (op1, mode))
+
+ if (symbolic_address_operand (op1, mode))
{
if (TARGET_LOAD_ADDRESS)
{
@@ -3267,7 +3268,8 @@ src_operand (rtx op, enum machine_mode mode)
&& ((GET_CODE (XEXP (op, 0)) == SYMBOL_REF
|| GET_CODE (XEXP (op, 0)) == LABEL_REF
|| GET_CODE (XEXP (op, 0)) == CONST)))
- return ! TARGET_LOAD_DIRECT_MEMS && GET_MODE (op) == mode;
+ return !TARGET_EXPOSE_LDP &&
+ ! TARGET_LOAD_DIRECT_MEMS && GET_MODE (op) == mode;
return general_operand (op, mode);
}