diff options
author | hariharans <hariharans@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-02-04 16:17:47 +0000 |
---|---|---|
committer | hariharans <hariharans@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-02-04 16:17:47 +0000 |
commit | fe8988230a6a608f95e24472a5d8f98cba6edc20 (patch) | |
tree | c23ecf0172ace4c94e988440c80873a057c4dd6e /gcc/config/picochip/picochip.c | |
parent | 51428eb144388fc3122aeff8b5f3b5f8be3a5a57 (diff) | |
download | gcc-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.c | 16 |
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; } |