diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-03-01 22:55:26 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-03-01 22:55:26 +0000 |
commit | f9feeefd6d85544518f8e13c0b22de3bd8d2e13c (patch) | |
tree | 890b5e0f3346d2d526e143f398661f7d0627dffc /gcc/ira-build.c | |
parent | f40aaf2d0f9a3a61fb59d2fe31f656ccd7fa0fe1 (diff) | |
download | gcc-f9feeefd6d85544518f8e13c0b22de3bd8d2e13c.tar.gz |
PR middle-end/56461
* ira-build.c (ira_loop_nodes_count): New variable.
(create_loop_tree_nodes): Initialize it.
(finish_loop_tree_nodes): Use it instead of looking at current_loops.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@196397 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ira-build.c')
-rw-r--r-- | gcc/ira-build.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/gcc/ira-build.c b/gcc/ira-build.c index dd66091a335..b1e481bdb05 100644 --- a/gcc/ira-build.c +++ b/gcc/ira-build.c @@ -57,6 +57,9 @@ ira_loop_tree_node_t ira_bb_nodes; array. */ ira_loop_tree_node_t ira_loop_nodes; +/* And size of the ira_loop_nodes array. */ +unsigned int ira_loop_nodes_count; + /* Map regno -> allocnos with given regno (see comments for allocno member `next_regno_allocno'). */ ira_allocno_t *ira_regno_allocno_map; @@ -142,14 +145,16 @@ create_loop_tree_nodes (void) } if (current_loops == NULL) { + ira_loop_nodes_count = 1; ira_loop_nodes = ((struct ira_loop_tree_node *) ira_allocate (sizeof (struct ira_loop_tree_node))); init_loop_tree_node (ira_loop_nodes, 0); return; } + ira_loop_nodes_count = number_of_loops (); ira_loop_nodes = ((struct ira_loop_tree_node *) ira_allocate (sizeof (struct ira_loop_tree_node) - * number_of_loops ())); + * ira_loop_nodes_count)); FOR_EACH_VEC_SAFE_ELT (get_loops (), i, loop) { if (loop_outer (loop) != NULL) @@ -217,13 +222,9 @@ static void finish_loop_tree_nodes (void) { unsigned int i; - loop_p loop; - if (current_loops == NULL) - finish_loop_tree_node (&ira_loop_nodes[0]); - else - FOR_EACH_VEC_SAFE_ELT (get_loops (), i, loop) - finish_loop_tree_node (&ira_loop_nodes[i]); + for (i = 0; i < ira_loop_nodes_count; i++) + finish_loop_tree_node (&ira_loop_nodes[i]); ira_free (ira_loop_nodes); for (i = 0; i < (unsigned int) last_basic_block_before_change; i++) { |