From: Georg-Johann Lay Date: Fri, 21 Oct 2011 15:46:32 +0000 (+0000) Subject: avr.h (LEGITIMIZE_RELOAD_ADDRESS): Pass address of X instead of X to avr_legitimize_r... X-Git-Tag: releases/gcc-4.7.0~2912 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c1a330ef7f8c77e4cd064f0008d4b735ff9d621b;p=thirdparty%2Fgcc.git avr.h (LEGITIMIZE_RELOAD_ADDRESS): Pass address of X instead of X to avr_legitimize_reload_address. * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Pass address of X instead of X to avr_legitimize_reload_address. * config/avr/avr-protos.h (avr_legitimize_reload_address): Change first argument's type from rtx to rtx*. * config/avr/avr.c (avr_legitimize_reload_address): Ditto. Pass PX to push_reload instead of &X. Change log messages for better distinction. From-SVN: r180308 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c7a5e8f0f761..9d3269f63220 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2011-10-21 Georg-Johann Lay + + * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Pass address of X + instead of X to avr_legitimize_reload_address. + * config/avr/avr-protos.h (avr_legitimize_reload_address): Change + first argument's type from rtx to rtx*. + * config/avr/avr.c (avr_legitimize_reload_address): Ditto. + Pass PX to push_reload instead of &X. Change log messages for + better distinction. + 2011-10-21 Roland Stigge PR translation/47064 diff --git a/gcc/config/avr/avr-protos.h b/gcc/config/avr/avr-protos.h index dd8ba3a33189..817169e39fef 100644 --- a/gcc/config/avr/avr-protos.h +++ b/gcc/config/avr/avr-protos.h @@ -110,7 +110,7 @@ extern void out_shift_with_cnt (const char *templ, rtx insn, extern reg_class_t avr_mode_code_base_reg_class (enum machine_mode, RTX_CODE, RTX_CODE); extern bool avr_regno_mode_code_ok_for_base_p (int, enum machine_mode, RTX_CODE, RTX_CODE); extern rtx avr_incoming_return_addr_rtx (void); -extern rtx avr_legitimize_reload_address (rtx, enum machine_mode, int, int, int, int, rtx (*)(rtx,int)); +extern rtx avr_legitimize_reload_address (rtx*, enum machine_mode, int, int, int, int, rtx (*)(rtx,int)); #endif /* RTX_CODE */ #ifdef REAL_VALUE_TYPE diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index 94bc30af3d90..1d4c32aa3400 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -1356,11 +1356,13 @@ avr_legitimize_address (rtx x, rtx oldx, enum machine_mode mode) than 63 bytes or for R++ or --R addressing. */ rtx -avr_legitimize_reload_address (rtx x, enum machine_mode mode, +avr_legitimize_reload_address (rtx *px, enum machine_mode mode, int opnum, int type, int addr_type, int ind_levels ATTRIBUTE_UNUSED, rtx (*mk_memloc)(rtx,int)) { + rtx x = *px; + if (avr_log.legitimize_reload_address) avr_edump ("\n%?:%m %r\n", mode, x); @@ -1372,7 +1374,7 @@ avr_legitimize_reload_address (rtx x, enum machine_mode mode, opnum, RELOAD_OTHER); if (avr_log.legitimize_reload_address) - avr_edump (" RCLASS = %R\n IN = %r\n OUT = %r\n", + avr_edump (" RCLASS.1 = %R\n IN = %r\n OUT = %r\n", POINTER_REGS, XEXP (x, 0), XEXP (x, 0)); return x; @@ -1398,7 +1400,7 @@ avr_legitimize_reload_address (rtx x, enum machine_mode mode, 1, addr_type); if (avr_log.legitimize_reload_address) - avr_edump (" RCLASS = %R\n IN = %r\n OUT = %r\n", + avr_edump (" RCLASS.2 = %R\n IN = %r\n OUT = %r\n", POINTER_REGS, XEXP (mem, 0), NULL_RTX); push_reload (mem, NULL_RTX, &XEXP (x, 0), NULL, @@ -1406,7 +1408,7 @@ avr_legitimize_reload_address (rtx x, enum machine_mode mode, opnum, type); if (avr_log.legitimize_reload_address) - avr_edump (" RCLASS = %R\n IN = %r\n OUT = %r\n", + avr_edump (" RCLASS.2 = %R\n IN = %r\n OUT = %r\n", BASE_POINTER_REGS, mem, NULL_RTX); return x; @@ -1415,12 +1417,12 @@ avr_legitimize_reload_address (rtx x, enum machine_mode mode, else if (! (frame_pointer_needed && XEXP (x, 0) == frame_pointer_rtx)) { - push_reload (x, NULL_RTX, &x, NULL, + push_reload (x, NULL_RTX, px, NULL, POINTER_REGS, GET_MODE (x), VOIDmode, 0, 0, opnum, type); if (avr_log.legitimize_reload_address) - avr_edump (" RCLASS = %R\n IN = %r\n OUT = %r\n", + avr_edump (" RCLASS.3 = %R\n IN = %r\n OUT = %r\n", POINTER_REGS, x, NULL_RTX); return x; diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h index 1a5f20a0e13b..b9ce56fa59fc 100644 --- a/gcc/config/avr/avr.h +++ b/gcc/config/avr/avr.h @@ -375,7 +375,7 @@ typedef struct avr_args { #define LEGITIMIZE_RELOAD_ADDRESS(X,MODE,OPNUM,TYPE,IND_L,WIN) \ do { \ - rtx new_x = avr_legitimize_reload_address (X, MODE, OPNUM, TYPE, \ + rtx new_x = avr_legitimize_reload_address (&(X), MODE, OPNUM, TYPE, \ ADDR_TYPE (TYPE), \ IND_L, make_memloc); \ if (new_x) \