Commit 5b43bf05 by Hariharan Sandanagobalane Committed by Hariharan Sandanagobalane

picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow non-indexable addresses even before reload.

        * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
          non-indexable addresses even before reload.

From-SVN: r143929
parent 062c4bb3
2009-02-04 Hariharan Sandanagobalane <hariharan@picochip.com>
* config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
non-indexable addresses even before reload.
2009-02-03 Joseph Myers <joseph@codesourcery.com>
PR c/29129
......
......@@ -1200,8 +1200,7 @@ picochip_legitimate_address_register (rtx x, unsigned strict)
/* Determine whether the given constant is in the range required for
the given base register. */
static int
picochip_const_ok_for_base (enum machine_mode mode, int regno, int offset,
int strict)
picochip_const_ok_for_base (enum machine_mode mode, int regno, int offset)
{
HOST_WIDE_INT corrected_offset;
......@@ -1209,17 +1208,16 @@ picochip_const_ok_for_base (enum machine_mode mode, int regno, int offset,
{
if (GET_MODE_SIZE(mode) <= 4)
{
/* We can allow incorrect offsets if strict is 0. If strict is 1,
we are in reload and these memory accesses need to be changed. */
if (offset % GET_MODE_SIZE (mode) != 0 && strict == 1)
/* We used to allow incorrect offsets if strict is 0. But, this would
then rely on reload doing the right thing. We have had problems
there before, and on > 4.3 compiler, there are no benefits. */
if (offset % GET_MODE_SIZE (mode) != 0)
return 0;
corrected_offset = offset / GET_MODE_SIZE (mode);
}
else
{
/* We can allow incorrect offsets if strict is 0. If strict is 1,
we are in reload and these memory accesses need to be changed. */
if (offset % 4 != 0 && strict == 1)
if (offset % 4 != 0)
return 0;
corrected_offset = offset / 4;
}
......@@ -1272,7 +1270,7 @@ picochip_legitimate_address_p (int mode, rtx x, unsigned strict)
picochip_legitimate_address_register (base, strict) &&
CONST_INT == GET_CODE (offset) &&
picochip_const_ok_for_base (mode, REGNO (base),
INTVAL (offset),strict));
INTVAL (offset)));
break;
}
......
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