From 95d5fa3e5be3392967cda8e5315cf3ea74ddec5e Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Fri, 14 Aug 2009 21:15:29 +0000 Subject: [PATCH] free values again if we know we don't need them anymore [r26343] --- ir/be/benewalloc.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ir/be/benewalloc.c b/ir/be/benewalloc.c index a43b4a702..6ac4d9fd9 100644 --- a/ir/be/benewalloc.c +++ b/ir/be/benewalloc.c @@ -607,7 +607,6 @@ static void permutate_values(ir_nodeset_t *live_nodes, ir_node *before, ins[old_reg] = value; ++n_used[old_reg]; - //free_reg_of_value(value); /* free occupation infos, we'll add the values back later */ if (live_nodes != NULL) { @@ -647,9 +646,13 @@ static void permutate_values(ir_nodeset_t *live_nodes, ir_node *before, /* old register has 1 user less, permutation is resolved */ assert(arch_register_get_index(arch_get_irn_register(src)) == old_r); + permutation[r] = r; + assert(n_used[old_r] > 0); --n_used[old_r]; - permutation[r] = r; + if (n_used[old_r] == 0) { + free_reg_of_value(src); + } /* advance or jump back (if this copy enabled another copy) */ if (old_r < r && n_used[old_r] == 0) { -- 2.20.1