i386.h (LEGITIMIZE_RELOAD_ADDRESS): Remove.

* config/i386/i386.h (LEGITIMIZE_RELOAD_ADDRESS): Remove.
	* config/i386/i386.c (ix86_legitimize_reload_address): Ditto.
	* config/i386/i386-protos.h (ix86_legitimize_reload_address): Ditto.

From-SVN: r222193
This commit is contained in:
Uros Bizjak 2015-04-17 19:59:24 +02:00 committed by Uros Bizjak
parent faabf7880c
commit fdce7c12f3
4 changed files with 6 additions and 69 deletions

View File

@ -1,3 +1,9 @@
2015-04-17 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.h (LEGITIMIZE_RELOAD_ADDRESS): Remove.
* config/i386/i386.c (ix86_legitimize_reload_address): Ditto.
* config/i386/i386-protos.h (ix86_legitimize_reload_address): Ditto.
2015-04-17 Andreas Tobler <andreast@gcc.gnu.org>
PR target/65535

View File

@ -67,8 +67,6 @@ extern bool ix86_expand_set_or_movmem (rtx, rtx, rtx, rtx, rtx, rtx,
extern bool constant_address_p (rtx);
extern bool legitimate_pic_operand_p (rtx);
extern bool legitimate_pic_address_disp_p (rtx);
extern bool ix86_legitimize_reload_address (rtx, machine_mode,
int, int, int);
extern void print_reg (rtx, int, FILE*);
extern void ix86_print_operand (FILE *, rtx, int);

View File

@ -13320,62 +13320,6 @@ legitimate_pic_address_disp_p (rtx disp)
return false;
}
/* Our implementation of LEGITIMIZE_RELOAD_ADDRESS. Returns a value to
replace the input X, or the original X if no replacement is called for.
The output parameter *WIN is 1 if the calling macro should goto WIN,
0 if it should not. */
bool
ix86_legitimize_reload_address (rtx x, machine_mode, int opnum, int type,
int)
{
/* Reload can generate:
(plus:DI (plus:DI (unspec:DI [(const_int 0 [0])] UNSPEC_TP)
(reg:DI 97))
(reg:DI 2 cx))
This RTX is rejected from ix86_legitimate_address_p due to
non-strictness of base register 97. Following this rejection,
reload pushes all three components into separate registers,
creating invalid memory address RTX.
Following code reloads only the invalid part of the
memory address RTX. */
if (GET_CODE (x) == PLUS
&& REG_P (XEXP (x, 1))
&& GET_CODE (XEXP (x, 0)) == PLUS
&& REG_P (XEXP (XEXP (x, 0), 1)))
{
rtx base, index;
bool something_reloaded = false;
base = XEXP (XEXP (x, 0), 1);
if (!REG_OK_FOR_BASE_STRICT_P (base))
{
push_reload (base, NULL_RTX, &XEXP (XEXP (x, 0), 1), NULL,
BASE_REG_CLASS, GET_MODE (x), VOIDmode, 0, 0,
opnum, (enum reload_type) type);
something_reloaded = true;
}
index = XEXP (x, 1);
if (!REG_OK_FOR_INDEX_STRICT_P (index))
{
push_reload (index, NULL_RTX, &XEXP (x, 1), NULL,
INDEX_REG_CLASS, GET_MODE (x), VOIDmode, 0, 0,
opnum, (enum reload_type) type);
something_reloaded = true;
}
gcc_assert (something_reloaded);
return true;
}
return false;
}
/* Determine if op is suitable RTX for an address register.
Return naked register if a register or a register subreg is
found, otherwise return NULL_RTX. */

View File

@ -1830,17 +1830,6 @@ typedef struct ix86_args {
#define CONSTANT_ADDRESS_P(X) constant_address_p (X)
/* Try a machine-dependent way of reloading an illegitimate address
operand. If we find one, push the reload and jump to WIN. This
macro is used in only one place: `find_reloads_address' in reload.c. */
#define LEGITIMIZE_RELOAD_ADDRESS(X, MODE, OPNUM, TYPE, INDL, WIN) \
do { \
if (ix86_legitimize_reload_address ((X), (MODE), (OPNUM), \
(int)(TYPE), (INDL))) \
goto WIN; \
} while (0)
/* If defined, a C expression to determine the base term of address X.
This macro is used in only one place: `find_base_term' in alias.c.