diff options
author | Peter Bergner <bergner@vnet.ibm.com> | 2008-03-07 09:20:31 -0600 |
---|---|---|
committer | Peter Bergner <bergner@gcc.gnu.org> | 2008-03-07 09:20:31 -0600 |
commit | efc05e3c551eb5b6d14511350c6b68bb50432803 (patch) | |
tree | 8e74b2f713fc6d836d8fdc14f02effb8fed1db9d /gcc | |
parent | 96d8488248db69df9d3ee03b93d89012c0dae96a (diff) | |
download | gcc-efc05e3c551eb5b6d14511350c6b68bb50432803.zip gcc-efc05e3c551eb5b6d14511350c6b68bb50432803.tar.gz gcc-efc05e3c551eb5b6d14511350c6b68bb50432803.tar.bz2 |
re PR target/35373 (bootstraping on powerpc with 128bit long double fails with revision 132578)
PR target/35373
* config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
reg+const addressing for Altivec modes. Don't generate reg+reg
addressing for TFmode or TDmode quantities.
From-SVN: r133008
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 10 |
2 files changed, 13 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 783ad5e..b7b8dda 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2008-03-07 Peter Bergner <bergner@vnet.ibm.com> + + PR target/35373 + * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate + reg+const addressing for Altivec modes. Don't generate reg+reg + addressing for TFmode or TDmode quantities. + 2008-03-07 Paolo Bonzini <bonzini@gnu.org> * c-common.c (vector_types_convertible_p): Call langhook diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 781e50e..a979799 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -3615,6 +3615,7 @@ rs6000_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED, && GET_CODE (XEXP (x, 1)) == CONST_INT && (unsigned HOST_WIDE_INT) (INTVAL (XEXP (x, 1)) + 0x8000) >= 0x10000 && !(SPE_VECTOR_MODE (mode) + || ALTIVEC_VECTOR_MODE (mode) || (TARGET_E500_DOUBLE && (mode == DFmode || mode == TFmode || mode == DImode)))) { @@ -3632,11 +3633,12 @@ rs6000_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED, && GET_MODE_NUNITS (mode) == 1 && ((TARGET_HARD_FLOAT && TARGET_FPRS) || TARGET_POWERPC64 - || (((mode != DImode && mode != DFmode && mode != DDmode) - || TARGET_E500_DOUBLE) - && mode != TFmode && mode != TDmode)) + || ((mode != DImode && mode != DFmode && mode != DDmode) + || TARGET_E500_DOUBLE)) && (TARGET_POWERPC64 || mode != DImode) - && mode != TImode) + && mode != TImode + && mode != TFmode + && mode != TDmode) { return gen_rtx_PLUS (Pmode, XEXP (x, 0), force_reg (Pmode, force_operand (XEXP (x, 1), 0))); |