diff options
author | vmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-09-03 20:20:57 +0000 |
---|---|---|
committer | vmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-09-03 20:20:57 +0000 |
commit | 2bae4acc54e8f37edc1d5e913c6be6f8284fe3cf (patch) | |
tree | 9019b331be1659d737cfbcd55b9525108bc47b83 /gcc/ira-color.c | |
parent | a15b4a3c5dce9d98a9ddbca764a998e6c12e60cb (diff) | |
download | gcc-2bae4acc54e8f37edc1d5e913c6be6f8284fe3cf.tar.gz |
2008-09-03 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-opt/37243
* ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
all_allocnos.
* ira-color.c (print_loop_title): Use all_allocnos.
(color_pass): Ditto. Don't add border_allocnos. Check that
subloop allocno in the correspdoning bitmap all_allocnos.
* ira-emit.c (change_loop): Use all_allocnos.
* ira-build.c (create_loop_tree_nodes, finish_loop_tree_node):
Ditto.
(ira_create_allocno): Set up all_allocnos bit for the created
allocno.
(create_cap_allocno): Remove setting mentioned_allocnos.
(create_insn_allocnos): Ditto.
(remove_unnecessary_allocnos): Use all_allocnos.
(check_allocno_creation): Check that allocnos are in the
corresponding bitmap all_allocnos.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@139952 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ira-color.c')
-rw-r--r-- | gcc/ira-color.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/gcc/ira-color.c b/gcc/ira-color.c index 71e3f68aca0..8afc01078ee 100644 --- a/gcc/ira-color.c +++ b/gcc/ira-color.c @@ -1606,13 +1606,13 @@ print_loop_title (ira_loop_tree_node_t loop_tree_node) ira_assert (loop_tree_node->loop != NULL); fprintf (ira_dump_file, - "\n Loop %d (parent %d, header bb%d, depth %d)\n ref:", + "\n Loop %d (parent %d, header bb%d, depth %d)\n all:", loop_tree_node->loop->num, (loop_tree_node->parent == NULL ? -1 : loop_tree_node->parent->loop->num), loop_tree_node->loop->header->index, loop_depth (loop_tree_node->loop)); - EXECUTE_IF_SET_IN_BITMAP (loop_tree_node->mentioned_allocnos, 0, j, bi) + EXECUTE_IF_SET_IN_BITMAP (loop_tree_node->all_allocnos, 0, j, bi) fprintf (ira_dump_file, " %dr%d", j, ALLOCNO_REGNO (ira_allocnos[j])); fprintf (ira_dump_file, "\n modified regnos:"); EXECUTE_IF_SET_IN_BITMAP (loop_tree_node->modified_regnos, 0, j, bi) @@ -1654,8 +1654,7 @@ color_pass (ira_loop_tree_node_t loop_tree_node) if (internal_flag_ira_verbose > 1 && ira_dump_file != NULL) print_loop_title (loop_tree_node); - bitmap_copy (coloring_allocno_bitmap, loop_tree_node->mentioned_allocnos); - bitmap_ior_into (coloring_allocno_bitmap, loop_tree_node->border_allocnos); + bitmap_copy (coloring_allocno_bitmap, loop_tree_node->all_allocnos); bitmap_copy (consideration_allocno_bitmap, coloring_allocno_bitmap); EXECUTE_IF_SET_IN_BITMAP (consideration_allocno_bitmap, 0, j, bi) { @@ -1669,7 +1668,7 @@ color_pass (ira_loop_tree_node_t loop_tree_node) /* Process caps. They are processed just once. */ if (flag_ira_algorithm == IRA_ALGORITHM_MIXED || flag_ira_algorithm == IRA_ALGORITHM_REGIONAL) - EXECUTE_IF_SET_IN_BITMAP (loop_tree_node->mentioned_allocnos, 0, j, bi) + EXECUTE_IF_SET_IN_BITMAP (loop_tree_node->all_allocnos, 0, j, bi) { a = ira_allocnos[j]; if (ALLOCNO_CAP_MEMBER (a) == NULL) @@ -1725,12 +1724,11 @@ color_pass (ira_loop_tree_node_t loop_tree_node) if (subloop_allocno == NULL || ALLOCNO_CAP (subloop_allocno) != NULL) continue; - if ((flag_ira_algorithm == IRA_ALGORITHM_MIXED - && (loop_tree_node->reg_pressure[rclass] - <= ira_available_class_regs[rclass])) - || (hard_regno < 0 - && ! bitmap_bit_p (subloop_node->mentioned_allocnos, - ALLOCNO_NUM (subloop_allocno)))) + ira_assert (bitmap_bit_p (subloop_node->all_allocnos, + ALLOCNO_NUM (subloop_allocno))); + if (flag_ira_algorithm == IRA_ALGORITHM_MIXED + && (loop_tree_node->reg_pressure[rclass] + <= ira_available_class_regs[rclass])) { if (! ALLOCNO_ASSIGNED_P (subloop_allocno)) { |