aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKazu Hirata <kazu@cs.umass.edu>2005-04-23 15:10:31 +0000
committerKazu Hirata <kazu@gcc.gnu.org>2005-04-23 15:10:31 +0000
commit7df5a591b2c2d8a905af2c25a1ddbd8eaffa00ab (patch)
tree4a33e5e9ac1d788b34126572538e9beb33738e40 /gcc
parentd0b06ef9018e85eb621d5ba10a2416a2c6cbddd5 (diff)
downloadgcc-7df5a591b2c2d8a905af2c25a1ddbd8eaffa00ab.zip
gcc-7df5a591b2c2d8a905af2c25a1ddbd8eaffa00ab.tar.gz
gcc-7df5a591b2c2d8a905af2c25a1ddbd8eaffa00ab.tar.bz2
tree-ssa-live.c (build_tree_conflict_graph): Allocate partition_link and tpa_nodes on heap.
* tree-ssa-live.c (build_tree_conflict_graph): Allocate partition_link and tpa_nodes on heap. From-SVN: r98617
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/tree-ssa-live.c19
2 files changed, 14 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 10fa8b1..164a4a3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -4,6 +4,9 @@
heap as an argument. Update uses of stack.
(calculate_live_on_entry): Allocate stack on heap.
+ * tree-ssa-live.c (build_tree_conflict_graph): Allocate
+ partition_link and tpa_nodes on heap.
+
2005-04-23 Mike Stump <mrs@apple.com>
* config/darwin.c (machopic_indirection_name): Don't use
diff --git a/gcc/tree-ssa-live.c b/gcc/tree-ssa-live.c
index 53ab28b..6f9d77e 100644
--- a/gcc/tree-ssa-live.c
+++ b/gcc/tree-ssa-live.c
@@ -1293,7 +1293,8 @@ build_tree_conflict_graph (tree_live_info_p liveinfo, tpa_p tpa,
bitmap live;
unsigned x, y, i;
basic_block bb;
- varray_type partition_link, tpa_to_clear, tpa_nodes;
+ varray_type tpa_to_clear;
+ int *partition_link, *tpa_nodes;
unsigned l;
ssa_op_iter iter;
bitmap_iterator bi;
@@ -1306,8 +1307,8 @@ build_tree_conflict_graph (tree_live_info_p liveinfo, tpa_p tpa,
live = BITMAP_ALLOC (NULL);
- VARRAY_INT_INIT (partition_link, num_var_partitions (map) + 1, "part_link");
- VARRAY_INT_INIT (tpa_nodes, tpa_num_trees (tpa), "tpa nodes");
+ partition_link = xcalloc (num_var_partitions (map) + 1, sizeof (int));
+ tpa_nodes = xcalloc (tpa_num_trees (tpa), sizeof (int));
VARRAY_INT_INIT (tpa_to_clear, 50, "tpa to clear");
FOR_EACH_BB (bb)
@@ -1414,26 +1415,28 @@ build_tree_conflict_graph (tree_live_info_p liveinfo, tpa_p tpa,
i = tpa_find_tree (tpa, x);
if (i != (unsigned)TPA_NONE)
{
- int start = VARRAY_INT (tpa_nodes, i);
+ int start = tpa_nodes[i];
/* If start is 0, a new root reference list is being started.
Register it to be cleared. */
if (!start)
VARRAY_PUSH_INT (tpa_to_clear, i);
/* Add interferences to other tpa members seen. */
- for (y = start; y != 0; y = VARRAY_INT (partition_link, y))
+ for (y = start; y != 0; y = partition_link[y])
conflict_graph_add (graph, x, y - 1);
- VARRAY_INT (tpa_nodes, i) = x + 1;
- VARRAY_INT (partition_link, x + 1) = start;
+ tpa_nodes[i] = x + 1;
+ partition_link[x + 1] = start;
}
}
/* Now clear the used tpa root references. */
for (l = 0; l < VARRAY_ACTIVE_SIZE (tpa_to_clear); l++)
- VARRAY_INT (tpa_nodes, VARRAY_INT (tpa_to_clear, l)) = 0;
+ tpa_nodes[VARRAY_INT (tpa_to_clear, l)] = 0;
VARRAY_POP_ALL (tpa_to_clear);
}
+ free (tpa_nodes);
+ free (partition_link);
BITMAP_FREE (live);
return graph;
}