From 55100279621f23e1bc26aebb1bb89423d9666033 Mon Sep 17 00:00:00 2001 From: bergner Date: Fri, 7 Mar 2008 15:20:31 +0000 Subject: [PATCH] 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@133008 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/config/rs6000/rs6000.c | 10 ++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 783ad5e147c..b7b8ddae709 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2008-03-07 Peter Bergner + + 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 * c-common.c (vector_types_convertible_p): Call langhook diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 781e50e377c..a9797998ada 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))); -- 2.11.4.GIT