alias.c (init_alias_analysis): Remove simplification loop after propagating pointers.
* alias.c (init_alias_analysis): Remove simplification loop after propagating pointers. From-SVN: r119262
This commit is contained in:
parent
fbee3d219a
commit
4a25ff8383
|
@ -1,3 +1,8 @@
|
|||
2006-11-27 Steven Bosscher <steven@gcc.gnu.org>
|
||||
|
||||
* alias.c (init_alias_analysis): Remove simplification loop
|
||||
after propagating pointers.
|
||||
|
||||
2006-11-27 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
* config/i386/i386.c (x86_ext_80387_constants): Add m_K8, m_CORE2
|
||||
|
|
32
gcc/alias.c
32
gcc/alias.c
|
@ -2586,38 +2586,6 @@ init_alias_analysis (void)
|
|||
if (reg_known_value[i] == 0)
|
||||
reg_known_value[i] = regno_reg_rtx[i + FIRST_PSEUDO_REGISTER];
|
||||
|
||||
/* Simplify the reg_base_value array so that no register refers to
|
||||
another register, except to special registers indirectly through
|
||||
ADDRESS expressions.
|
||||
|
||||
In theory this loop can take as long as O(registers^2), but unless
|
||||
there are very long dependency chains it will run in close to linear
|
||||
time.
|
||||
|
||||
This loop may not be needed any longer now that the main loop does
|
||||
a better job at propagating alias information. */
|
||||
pass = 0;
|
||||
do
|
||||
{
|
||||
changed = 0;
|
||||
pass++;
|
||||
for (ui = 0; ui < maxreg; ui++)
|
||||
{
|
||||
rtx base = VEC_index (rtx, reg_base_value, ui);
|
||||
if (base && REG_P (base))
|
||||
{
|
||||
unsigned int base_regno = REGNO (base);
|
||||
if (base_regno == ui) /* register set from itself */
|
||||
VEC_replace (rtx, reg_base_value, ui, 0);
|
||||
else
|
||||
VEC_replace (rtx, reg_base_value, ui,
|
||||
VEC_index (rtx, reg_base_value, base_regno));
|
||||
changed = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
while (changed && pass < MAX_ALIAS_LOOP_PASSES);
|
||||
|
||||
/* Clean up. */
|
||||
free (new_reg_base_value);
|
||||
new_reg_base_value = 0;
|
||||
|
|
Loading…
Reference in New Issue