aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/alias.c32
2 files changed, 5 insertions, 32 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fa65b98..896826d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/alias.c b/gcc/alias.c
index d027b79..a3634ac 100644
--- a/gcc/alias.c
+++ b/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;