diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2008-11-19 21:25:00 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2008-11-19 21:25:00 +0000 |
commit | ea1c67e6e3fe69c1926b8bbba75998d147dd5565 (patch) | |
tree | abbc12ec53d3e488d10d9e7e19b31568683777b9 /gcc/ira-build.c | |
parent | 3553f0bb324124195a64ce30c0832463e9082461 (diff) | |
download | gcc-ea1c67e6e3fe69c1926b8bbba75998d147dd5565.zip gcc-ea1c67e6e3fe69c1926b8bbba75998d147dd5565.tar.gz gcc-ea1c67e6e3fe69c1926b8bbba75998d147dd5565.tar.bz2 |
re PR bootstrap/37859 (Bootstrap failure on mips64octeon-unknown-linux-gnu)
2008-11-19 Vladimir Makarov <vmakarov@redhat.com>
PR bootstrap/37859
* ira-int.h (struct ira_loop_tree_node): New member
entered_from_non_parent_p.
* ira-color.c (print_loop_title): Print loop bbs.
* ira-emit.c (entered_from_non_parent_p,
setup_entered_from_non_parent_p): New functions.
(not_modified_p): Rename to store_can_be_removed_p. Check there
is no side entries.
(generate_edge_moves): Use store_can_be_removed_p instead of
not_modified_p.
(ira_emit): Call setup_entered_from_non_parent_p.
* ira-build.c (copy_info_to_removed_store_destinations):
Accumulate CALL_FREQ, CALL_CROSSED_NUM, and
ALLOCNO_EXCESS_PRESSURE_POINTS_NUM.
(ira_flattening): Don't CHECK MEM_OPTIMIZED_DEST[_P], always
update all accumulated attributes.
From-SVN: r142018
Diffstat (limited to 'gcc/ira-build.c')
-rw-r--r-- | gcc/ira-build.c | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/gcc/ira-build.c b/gcc/ira-build.c index af1d174..e4ed601 100644 --- a/gcc/ira-build.c +++ b/gcc/ira-build.c @@ -2193,6 +2193,11 @@ copy_info_to_removed_store_destinations (int regno) if (ALLOCNO_TOTAL_NO_STACK_REG_P (a)) ALLOCNO_TOTAL_NO_STACK_REG_P (parent_a) = true; #endif + ALLOCNO_CALL_FREQ (parent_a) += ALLOCNO_CALL_FREQ (a); + ALLOCNO_CALLS_CROSSED_NUM (parent_a) + += ALLOCNO_CALLS_CROSSED_NUM (a); + ALLOCNO_EXCESS_PRESSURE_POINTS_NUM (parent_a) + += ALLOCNO_EXCESS_PRESSURE_POINTS_NUM (a); merged_p = true; } return merged_p; @@ -2208,7 +2213,7 @@ void ira_flattening (int max_regno_before_emit, int ira_max_point_before_emit) { int i, j, num; - bool stop_p, keep_p; + bool keep_p; int hard_regs_num; bool new_pseudos_p, merged_p, mem_dest_p; unsigned int n; @@ -2293,26 +2298,15 @@ ira_flattening (int max_regno_before_emit, int ira_max_point_before_emit) continue; } new_pseudos_p = true; - first = ALLOCNO_MEM_OPTIMIZED_DEST (a) == NULL ? NULL : a; - stop_p = false; for (;;) { - if (first == NULL - && ALLOCNO_MEM_OPTIMIZED_DEST (parent_a) != NULL) - first = parent_a; ALLOCNO_NREFS (parent_a) -= ALLOCNO_NREFS (a); ALLOCNO_FREQ (parent_a) -= ALLOCNO_FREQ (a); - if (first != NULL - && ALLOCNO_MEM_OPTIMIZED_DEST (first) == parent_a) - stop_p = true; - else if (!stop_p) - { - ALLOCNO_CALL_FREQ (parent_a) -= ALLOCNO_CALL_FREQ (a); - ALLOCNO_CALLS_CROSSED_NUM (parent_a) - -= ALLOCNO_CALLS_CROSSED_NUM (a); - ALLOCNO_EXCESS_PRESSURE_POINTS_NUM (parent_a) - -= ALLOCNO_EXCESS_PRESSURE_POINTS_NUM (a); - } + ALLOCNO_CALL_FREQ (parent_a) -= ALLOCNO_CALL_FREQ (a); + ALLOCNO_CALLS_CROSSED_NUM (parent_a) + -= ALLOCNO_CALLS_CROSSED_NUM (a); + ALLOCNO_EXCESS_PRESSURE_POINTS_NUM (parent_a) + -= ALLOCNO_EXCESS_PRESSURE_POINTS_NUM (a); ira_assert (ALLOCNO_CALLS_CROSSED_NUM (parent_a) >= 0 && ALLOCNO_NREFS (parent_a) >= 0 && ALLOCNO_FREQ (parent_a) >= 0); |