From fba3c488144e22944fed0c05678555187b1860ff Mon Sep 17 00:00:00 2001 From: kkojima Date: Sun, 11 Apr 2010 22:59:36 +0000 Subject: [PATCH 1/1] * config/sh/sh-protos.h (sh_legitimize_reload_address): Declare. * config/sh/sh.c: Include reload.h. (sh_legitimize_reload_address): New. * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Use sh_legitimize_reload_address. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158208 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/config/sh/sh.c | 7 ++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fb4c805d1b8..2c63db3eb22 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2010-04-11 Kaz Kojima + + * config/sh/sh-protos.h (sh_legitimize_reload_address): Declare. + * config/sh/sh.c: Include reload.h. + (sh_legitimize_reload_address): New. + * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Use + sh_legitimize_reload_address. + 2010-04-11 Kaushik Phatak * config/sh/sh.md (*movqi_pop): New insn pattern. diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 036c6e5b287..350a2b6600c 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -9676,7 +9676,7 @@ sh_legitimize_reload_address (rtx *p, enum machine_mode mode, int opnum, if (GET_CODE (*p) == PLUS && (GET_MODE_SIZE (mode) == 4 || GET_MODE_SIZE (mode) == 8) && CONST_INT_P (XEXP (*p, 1)) - && MAYBE_BASE_REGISTER_RTX_P (XEXP (*p, 0), true) + && BASE_REGISTER_RTX_P (XEXP (*p, 0)) && ! TARGET_SHMEDIA && ! (TARGET_SH4 && mode == DFmode) && ! (mode == PSImode && type == RELOAD_FOR_INPUT_ADDRESS) @@ -9710,7 +9710,8 @@ sh_legitimize_reload_address (rtx *p, enum machine_mode mode, int opnum, /* Sometimes the normal form does not suit DImode. We could avoid that by using smaller ranges, but that would give less optimized code when SImode is prevalent. */ - if (GET_MODE_SIZE (mode) + offset - offset_base <= 64) + if (offset_base != 0 + && GET_MODE_SIZE (mode) + offset - offset_base <= 64) { sum = gen_rtx_PLUS (Pmode, XEXP (*p, 0), GEN_INT (offset_base)); *p = gen_rtx_PLUS (Pmode, sum, GEN_INT (offset - offset_base)); @@ -9724,7 +9725,7 @@ sh_legitimize_reload_address (rtx *p, enum machine_mode mode, int opnum, && (GET_MODE_SIZE (mode) == 4 || GET_MODE_SIZE (mode) == 8) && GET_CODE (XEXP (*p, 0)) == PLUS && CONST_INT_P (XEXP (XEXP (*p, 0), 1)) - && MAYBE_BASE_REGISTER_RTX_P (XEXP (XEXP (*p, 0), 0), true) + && BASE_REGISTER_RTX_P (XEXP (XEXP (*p, 0), 0)) && CONST_INT_P (XEXP (*p, 1)) && ! TARGET_SHMEDIA && ! (TARGET_SH2E && mode == SFmode)) -- 2.11.0