summaryrefslogtreecommitdiff
path: root/gcc/ira-build.c
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2013-03-01 22:55:26 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2013-03-01 22:55:26 +0000
commitf9feeefd6d85544518f8e13c0b22de3bd8d2e13c (patch)
tree890b5e0f3346d2d526e143f398661f7d0627dffc /gcc/ira-build.c
parentf40aaf2d0f9a3a61fb59d2fe31f656ccd7fa0fe1 (diff)
downloadgcc-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.c15
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++)
{