conflict.c (conflict_graph_compute): Free regsets when finished.
* conflict.c (conflict_graph_compute): Free regsets when finished. * ssa.c (compute_coalesced_reg_partition): Likewise. From-SVN: r48792
This commit is contained in:
parent
cf11ac5596
commit
cdb574d383
3 changed files with 24 additions and 11 deletions
|
@ -1,3 +1,8 @@
|
|||
2002-01-12 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
|
||||
|
||||
* conflict.c (conflict_graph_compute): Free regsets when finished.
|
||||
* ssa.c (compute_coalesced_reg_partition): Likewise.
|
||||
|
||||
2002-01-12 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
|
||||
|
||||
* global.c (find_reg): Check for HARD_REGNO_CALL_PART_CLOBBERED
|
||||
|
|
|
@ -449,20 +449,20 @@ conflict_graph_compute (regs, p)
|
|||
{
|
||||
int b;
|
||||
conflict_graph graph = conflict_graph_new (max_reg_num ());
|
||||
regset_head live_head;
|
||||
regset live = &live_head;
|
||||
regset_head born_head;
|
||||
regset born = &born_head;
|
||||
|
||||
INIT_REG_SET (live);
|
||||
INIT_REG_SET (born);
|
||||
|
||||
for (b = n_basic_blocks; --b >= 0; )
|
||||
{
|
||||
basic_block bb = BASIC_BLOCK (b);
|
||||
regset_head live_head;
|
||||
regset live = &live_head;
|
||||
regset_head born_head;
|
||||
regset born = &born_head;
|
||||
rtx insn;
|
||||
rtx head;
|
||||
|
||||
INIT_REG_SET (live);
|
||||
INIT_REG_SET (born);
|
||||
|
||||
/* Start with the regs that are live on exit, limited to those
|
||||
we're interested in. */
|
||||
COPY_REG_SET (live, bb->global_live_at_end);
|
||||
|
@ -524,5 +524,8 @@ conflict_graph_compute (regs, p)
|
|||
}
|
||||
}
|
||||
|
||||
FREE_REG_SET (live);
|
||||
FREE_REG_SET (born);
|
||||
|
||||
return graph;
|
||||
}
|
||||
|
|
13
gcc/ssa.c
13
gcc/ssa.c
|
@ -1850,6 +1850,8 @@ compute_coalesced_reg_partition ()
|
|||
{
|
||||
int bb;
|
||||
int changed = 0;
|
||||
regset_head phi_set_head;
|
||||
regset phi_set = &phi_set_head;
|
||||
|
||||
partition p =
|
||||
partition_new (ssa_definition->num_elements);
|
||||
|
@ -1861,20 +1863,21 @@ compute_coalesced_reg_partition ()
|
|||
for (bb = n_basic_blocks; --bb >= 0; )
|
||||
make_regs_equivalent_over_bad_edges (bb, p);
|
||||
|
||||
INIT_REG_SET (phi_set);
|
||||
|
||||
do
|
||||
{
|
||||
regset_head phi_set;
|
||||
conflict_graph conflicts;
|
||||
|
||||
changed = 0;
|
||||
|
||||
/* Build the set of registers involved in phi nodes, either as
|
||||
arguments to the phi function or as the target of a set. */
|
||||
INITIALIZE_REG_SET (phi_set);
|
||||
mark_phi_and_copy_regs (&phi_set);
|
||||
CLEAR_REG_SET (phi_set);
|
||||
mark_phi_and_copy_regs (phi_set);
|
||||
|
||||
/* Compute conflicts. */
|
||||
conflicts = conflict_graph_compute (&phi_set, p);
|
||||
conflicts = conflict_graph_compute (phi_set, p);
|
||||
|
||||
/* FIXME: Better would be to process most frequently executed
|
||||
blocks first, so that most frequently executed copies would
|
||||
|
@ -1892,6 +1895,8 @@ compute_coalesced_reg_partition ()
|
|||
}
|
||||
while (changed > 0);
|
||||
|
||||
FREE_REG_SET (phi_set);
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue