Commit 17939c98 by Steve Ellcey Committed by Steve Ellcey

explow.c (convert_memory_address): Fold memory reference when POINTERS_EXTEND_UNSIGNED < 0

	* explow.c (convert_memory_address): Fold memory reference when
	POINTERS_EXTEND_UNSIGNED < 0

From-SVN: r123113
parent b5cf27d7
2007-02-21 Steve Ellcey <sje@cup.hp.com>
* explow.c (convert_memory_address): Fold memory reference when
POINTERS_EXTEND_UNSIGNED < 0
2007-03-21 Richard Henderson <rth@redhat.com>
PR target/31245
......
......@@ -382,12 +382,15 @@ convert_memory_address (enum machine_mode to_mode ATTRIBUTE_UNUSED,
case MULT:
/* For addition we can safely permute the conversion and addition
operation if one operand is a constant and converting the constant
does not change it. We can always safely permute them if we are
making the address narrower. */
does not change it or if one operand is a constant and we are
using a ptr_extend instruction (POINTERS_EXTEND_UNSIGNED < 0).
We can always safely permute them if we are making the address
narrower. */
if (GET_MODE_SIZE (to_mode) < GET_MODE_SIZE (from_mode)
|| (GET_CODE (x) == PLUS
&& GET_CODE (XEXP (x, 1)) == CONST_INT
&& XEXP (x, 1) == convert_memory_address (to_mode, XEXP (x, 1))))
&& (XEXP (x, 1) == convert_memory_address (to_mode, XEXP (x, 1))
|| POINTERS_EXTEND_UNSIGNED < 0)))
return gen_rtx_fmt_ee (GET_CODE (x), to_mode,
convert_memory_address (to_mode, XEXP (x, 0)),
XEXP (x, 1));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment