2004-01-26 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
+ * config/c4x/c4x.c (c4x_legitimate_address_p): Invalidate direct
+ memory references if TARGET_EXPOSE_LDP nonzero.
+
+2004-01-26 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
+
* config/c4x/c4x.c (legitimize_operands): Truncate invalid shift counts.
2004-01-26 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
&& 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)
{
&& ((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);
}