reload.c (find_reloads_toplev, [...]): Use rtx_equal_p...
* reload.c (find_reloads_toplev, find_reloads_address, find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p, not a pointer equality test, to decide if we need to call push_reg_equiv_alt_mem. From-SVN: r123724
This commit is contained in:
parent
017133fdc1
commit
0f4b25a3e3
|
@ -1,3 +1,10 @@
|
||||||
|
2007-04-11 Bernd Schmidt <bernd.schmidt@analog.com>
|
||||||
|
|
||||||
|
* reload.c (find_reloads_toplev, find_reloads_address,
|
||||||
|
find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
|
||||||
|
not a pointer equality test, to decide if we need to call
|
||||||
|
push_reg_equiv_alt_mem.
|
||||||
|
|
||||||
2007-04-11 Sebastian Pop <sebastian.pop@inria.fr>
|
2007-04-11 Sebastian Pop <sebastian.pop@inria.fr>
|
||||||
|
|
||||||
* tree-data-ref.c (affine_function_zero_p, constant_access_functions,
|
* tree-data-ref.c (affine_function_zero_p, constant_access_functions,
|
||||||
|
|
12
gcc/reload.c
12
gcc/reload.c
|
@ -4570,7 +4570,7 @@ find_reloads_toplev (rtx x, int opnum, enum reload_type type,
|
||||||
x = mem;
|
x = mem;
|
||||||
i = find_reloads_address (GET_MODE (x), &x, XEXP (x, 0), &XEXP (x, 0),
|
i = find_reloads_address (GET_MODE (x), &x, XEXP (x, 0), &XEXP (x, 0),
|
||||||
opnum, type, ind_levels, insn);
|
opnum, type, ind_levels, insn);
|
||||||
if (x != mem)
|
if (!rtx_equal_p (x, mem))
|
||||||
push_reg_equiv_alt_mem (regno, x);
|
push_reg_equiv_alt_mem (regno, x);
|
||||||
if (address_reloaded)
|
if (address_reloaded)
|
||||||
*address_reloaded = i;
|
*address_reloaded = i;
|
||||||
|
@ -4785,7 +4785,7 @@ find_reloads_address (enum machine_mode mode, rtx *memrefloc, rtx ad,
|
||||||
find_reloads_address (GET_MODE (tem), &tem, XEXP (tem, 0),
|
find_reloads_address (GET_MODE (tem), &tem, XEXP (tem, 0),
|
||||||
&XEXP (tem, 0), opnum,
|
&XEXP (tem, 0), opnum,
|
||||||
ADDR_TYPE (type), ind_levels, insn);
|
ADDR_TYPE (type), ind_levels, insn);
|
||||||
if (tem != orig)
|
if (!rtx_equal_p (tem, orig))
|
||||||
push_reg_equiv_alt_mem (regno, tem);
|
push_reg_equiv_alt_mem (regno, tem);
|
||||||
}
|
}
|
||||||
/* We can avoid a reload if the register's equivalent memory
|
/* We can avoid a reload if the register's equivalent memory
|
||||||
|
@ -5589,7 +5589,7 @@ find_reloads_address_1 (enum machine_mode mode, rtx x, int context,
|
||||||
RELOAD_OTHER,
|
RELOAD_OTHER,
|
||||||
ind_levels, insn);
|
ind_levels, insn);
|
||||||
|
|
||||||
if (tem != orig)
|
if (!rtx_equal_p (tem, orig))
|
||||||
push_reg_equiv_alt_mem (regno, tem);
|
push_reg_equiv_alt_mem (regno, tem);
|
||||||
|
|
||||||
/* Then reload the memory location into a base
|
/* Then reload the memory location into a base
|
||||||
|
@ -5656,7 +5656,7 @@ find_reloads_address_1 (enum machine_mode mode, rtx x, int context,
|
||||||
find_reloads_address (GET_MODE (tem), &tem, XEXP (tem, 0),
|
find_reloads_address (GET_MODE (tem), &tem, XEXP (tem, 0),
|
||||||
&XEXP (tem, 0), opnum, type,
|
&XEXP (tem, 0), opnum, type,
|
||||||
ind_levels, insn);
|
ind_levels, insn);
|
||||||
if (tem != orig)
|
if (!rtx_equal_p (tem, orig))
|
||||||
push_reg_equiv_alt_mem (regno, tem);
|
push_reg_equiv_alt_mem (regno, tem);
|
||||||
/* Put this inside a new increment-expression. */
|
/* Put this inside a new increment-expression. */
|
||||||
x = gen_rtx_fmt_e (GET_CODE (x), GET_MODE (x), tem);
|
x = gen_rtx_fmt_e (GET_CODE (x), GET_MODE (x), tem);
|
||||||
|
@ -5811,7 +5811,7 @@ find_reloads_address_1 (enum machine_mode mode, rtx x, int context,
|
||||||
find_reloads_address (GET_MODE (x), &x, XEXP (x, 0),
|
find_reloads_address (GET_MODE (x), &x, XEXP (x, 0),
|
||||||
&XEXP (x, 0), opnum, ADDR_TYPE (type),
|
&XEXP (x, 0), opnum, ADDR_TYPE (type),
|
||||||
ind_levels, insn);
|
ind_levels, insn);
|
||||||
if (x != tem)
|
if (!rtx_equal_p (x, tem))
|
||||||
push_reg_equiv_alt_mem (regno, x);
|
push_reg_equiv_alt_mem (regno, x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6037,7 +6037,7 @@ find_reloads_subreg_address (rtx x, int force_replace, int opnum,
|
||||||
&XEXP (tem, 0), opnum, type,
|
&XEXP (tem, 0), opnum, type,
|
||||||
ind_levels, insn);
|
ind_levels, insn);
|
||||||
/* ??? Do we need to handle nonzero offsets somehow? */
|
/* ??? Do we need to handle nonzero offsets somehow? */
|
||||||
if (!offset && tem != orig)
|
if (!offset && !rtx_equal_p (tem, orig))
|
||||||
push_reg_equiv_alt_mem (regno, tem);
|
push_reg_equiv_alt_mem (regno, tem);
|
||||||
|
|
||||||
/* If this is not a toplevel operand, find_reloads doesn't see
|
/* If this is not a toplevel operand, find_reloads doesn't see
|
||||||
|
|
Loading…
Reference in New Issue