mirror of
https://gcc.gnu.org/git/gcc.git
synced 2025-01-08 20:17:14 +08:00
reload.c (secondary_memlocs_elim_used): New static variable.
* reload.c (secondary_memlocs_elim_used): New static variable. (get_secondary_mem): Update it. (find_reloads): Use it. From-SVN: r76950
This commit is contained in:
parent
1f2eae8da5
commit
048b0d2ef9
10
gcc/reload.c
10
gcc/reload.c
@ -173,6 +173,7 @@ struct decomposition
|
||||
|
||||
static rtx secondary_memlocs[NUM_MACHINE_MODES];
|
||||
static rtx secondary_memlocs_elim[NUM_MACHINE_MODES][MAX_RECOG_OPERANDS];
|
||||
static int secondary_memlocs_elim_used = 0;
|
||||
#endif
|
||||
|
||||
/* The instruction we are doing reloads for;
|
||||
@ -644,6 +645,8 @@ get_secondary_mem (rtx x ATTRIBUTE_UNUSED, enum machine_mode mode,
|
||||
}
|
||||
|
||||
secondary_memlocs_elim[(int) mode][opnum] = loc;
|
||||
if (secondary_memlocs_elim_used <= opnum)
|
||||
secondary_memlocs_elim_used = opnum + 1;
|
||||
return loc;
|
||||
}
|
||||
|
||||
@ -2540,7 +2543,12 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known,
|
||||
/* The eliminated forms of any secondary memory locations are per-insn, so
|
||||
clear them out here. */
|
||||
|
||||
memset (secondary_memlocs_elim, 0, sizeof secondary_memlocs_elim);
|
||||
if (secondary_memlocs_elim_used)
|
||||
{
|
||||
memset (secondary_memlocs_elim, 0,
|
||||
sizeof (secondary_memlocs_elim[0]) * secondary_memlocs_elim_used);
|
||||
secondary_memlocs_elim_used = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Dispose quickly of (set (reg..) (reg..)) if both have hard regs and it
|
||||
|
Loading…
Reference in New Issue
Block a user