Commit c1a330ef by Georg-Johann Lay Committed by Georg-Johann Lay

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
parent 9200b302
2011-10-21 Georg-Johann Lay <avr@gjlay.de>
* 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 <stigge@antcom.de> 2011-10-21 Roland Stigge <stigge@antcom.de>
PR translation/47064 PR translation/47064
...@@ -110,7 +110,7 @@ extern void out_shift_with_cnt (const char *templ, rtx insn, ...@@ -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 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 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_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 */ #endif /* RTX_CODE */
#ifdef REAL_VALUE_TYPE #ifdef REAL_VALUE_TYPE
......
...@@ -1356,11 +1356,13 @@ avr_legitimize_address (rtx x, rtx oldx, enum machine_mode mode) ...@@ -1356,11 +1356,13 @@ avr_legitimize_address (rtx x, rtx oldx, enum machine_mode mode)
than 63 bytes or for R++ or --R addressing. */ than 63 bytes or for R++ or --R addressing. */
rtx 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 opnum, int type, int addr_type,
int ind_levels ATTRIBUTE_UNUSED, int ind_levels ATTRIBUTE_UNUSED,
rtx (*mk_memloc)(rtx,int)) rtx (*mk_memloc)(rtx,int))
{ {
rtx x = *px;
if (avr_log.legitimize_reload_address) if (avr_log.legitimize_reload_address)
avr_edump ("\n%?:%m %r\n", mode, x); avr_edump ("\n%?:%m %r\n", mode, x);
...@@ -1372,7 +1374,7 @@ avr_legitimize_reload_address (rtx x, enum machine_mode mode, ...@@ -1372,7 +1374,7 @@ avr_legitimize_reload_address (rtx x, enum machine_mode mode,
opnum, RELOAD_OTHER); opnum, RELOAD_OTHER);
if (avr_log.legitimize_reload_address) 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)); POINTER_REGS, XEXP (x, 0), XEXP (x, 0));
return x; return x;
...@@ -1398,7 +1400,7 @@ avr_legitimize_reload_address (rtx x, enum machine_mode mode, ...@@ -1398,7 +1400,7 @@ avr_legitimize_reload_address (rtx x, enum machine_mode mode,
1, addr_type); 1, addr_type);
if (avr_log.legitimize_reload_address) 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); POINTER_REGS, XEXP (mem, 0), NULL_RTX);
push_reload (mem, NULL_RTX, &XEXP (x, 0), NULL, push_reload (mem, NULL_RTX, &XEXP (x, 0), NULL,
...@@ -1406,7 +1408,7 @@ avr_legitimize_reload_address (rtx x, enum machine_mode mode, ...@@ -1406,7 +1408,7 @@ avr_legitimize_reload_address (rtx x, enum machine_mode mode,
opnum, type); opnum, type);
if (avr_log.legitimize_reload_address) 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); BASE_POINTER_REGS, mem, NULL_RTX);
return x; return x;
...@@ -1415,12 +1417,12 @@ avr_legitimize_reload_address (rtx x, enum machine_mode mode, ...@@ -1415,12 +1417,12 @@ avr_legitimize_reload_address (rtx x, enum machine_mode mode,
else if (! (frame_pointer_needed else if (! (frame_pointer_needed
&& XEXP (x, 0) == frame_pointer_rtx)) && 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, POINTER_REGS, GET_MODE (x), VOIDmode, 0, 0,
opnum, type); opnum, type);
if (avr_log.legitimize_reload_address) 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); POINTER_REGS, x, NULL_RTX);
return x; return x;
......
...@@ -375,7 +375,7 @@ typedef struct avr_args { ...@@ -375,7 +375,7 @@ typedef struct avr_args {
#define LEGITIMIZE_RELOAD_ADDRESS(X,MODE,OPNUM,TYPE,IND_L,WIN) \ #define LEGITIMIZE_RELOAD_ADDRESS(X,MODE,OPNUM,TYPE,IND_L,WIN) \
do { \ 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), \ ADDR_TYPE (TYPE), \
IND_L, make_memloc); \ IND_L, make_memloc); \
if (new_x) \ if (new_x) \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment