aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2007-09-27 15:01:16 +0100
committerJoseph Myers <jsm28@gcc.gnu.org>2007-09-27 15:01:16 +0100
commit3c1eb9eb6c8cf087a78774d6f3a1d7e1eaf1d036 (patch)
tree571ad095806b2779e2075bb55ba24efbe1eac488 /gcc/config
parentdcb859a33f5a926fd27e006e71bdb4e893e40924 (diff)
downloadgcc-3c1eb9eb6c8cf087a78774d6f3a1d7e1eaf1d036.zip
gcc-3c1eb9eb6c8cf087a78774d6f3a1d7e1eaf1d036.tar.gz
gcc-3c1eb9eb6c8cf087a78774d6f3a1d7e1eaf1d036.tar.bz2
rs6000.c (rs6000_legitimize_address): Do not reduce offset by units of 0x10000 for SPE vector modes or modes used...
* config/rs6000/rs6000.c (rs6000_legitimize_address): Do not reduce offset by units of 0x10000 for SPE vector modes or modes used with E500 double instructions. From-SVN: r128837
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/rs6000/rs6000.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index aa4da10..8a840ef 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -3381,7 +3381,10 @@ rs6000_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
if (GET_CODE (x) == PLUS
&& GET_CODE (XEXP (x, 0)) == REG
&& GET_CODE (XEXP (x, 1)) == CONST_INT
- && (unsigned HOST_WIDE_INT) (INTVAL (XEXP (x, 1)) + 0x8000) >= 0x10000)
+ && (unsigned HOST_WIDE_INT) (INTVAL (XEXP (x, 1)) + 0x8000) >= 0x10000
+ && !(SPE_VECTOR_MODE (mode)
+ || (TARGET_E500_DOUBLE && (mode == DFmode || mode == TFmode
+ || mode == DImode))))
{
HOST_WIDE_INT high_int, low_int;
rtx sum;