summaryrefslogtreecommitdiff
path: root/gcc/config/picochip/picochip.c
diff options
context:
space:
mode:
authorhariharans <hariharans@138bc75d-0d04-0410-961f-82ee72b054a4>2009-02-04 16:17:47 +0000
committerhariharans <hariharans@138bc75d-0d04-0410-961f-82ee72b054a4>2009-02-04 16:17:47 +0000
commitfe8988230a6a608f95e24472a5d8f98cba6edc20 (patch)
treec23ecf0172ace4c94e988440c80873a057c4dd6e /gcc/config/picochip/picochip.c
parent51428eb144388fc3122aeff8b5f3b5f8be3a5a57 (diff)
downloadgcc-fe8988230a6a608f95e24472a5d8f98cba6edc20.tar.gz
* config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
non-indexable addresses even before reload. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@143929 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/picochip/picochip.c')
-rw-r--r--gcc/config/picochip/picochip.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/gcc/config/picochip/picochip.c b/gcc/config/picochip/picochip.c
index a0686bdb262..066765661a9 100644
--- a/gcc/config/picochip/picochip.c
+++ b/gcc/config/picochip/picochip.c
@@ -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;
}