From f973ef5dcdb76c32c3702211c69bad93ec0ca99d Mon Sep 17 00:00:00 2001 From: David Given Date: Fri, 16 Dec 2016 16:00:05 +0100 Subject: [PATCH] Switch completely away from pmap_bi to the new bigraph module. --- mach/proto/mcg/pass_registerallocator.c | 59 ++++++++++--------------- 1 file changed, 24 insertions(+), 35 deletions(-) diff --git a/mach/proto/mcg/pass_registerallocator.c b/mach/proto/mcg/pass_registerallocator.c index 49f2a6ad3..8c8678fb9 100644 --- a/mach/proto/mcg/pass_registerallocator.c +++ b/mach/proto/mcg/pass_registerallocator.c @@ -27,8 +27,6 @@ struct vref static struct heap anode_heap; static struct graph interferenceg; static struct graph preferenceg; -static PMAPOF(struct anode, struct anode) interference; -static PMAPOF(struct anode, struct anode) preference; static ARRAYOF(struct anode) vertices; static ARRAYOF(struct anode) simplified; #if 0 @@ -905,10 +903,7 @@ static void interferes_with(struct vreg** regs1, int count1, struct vreg** regs2 struct anode* right = regs2[j]->anode; if (left != right) - { graph_add_edge(&interferenceg, left, right); - pmap_add_bi(&interference, left, right); - } } } } @@ -988,7 +983,6 @@ static void build_interference_graph_cb(struct hop* hop, void* user) if (src != dest) { graph_add_edge(&preferenceg, src, dest); - pmap_add_bi(&preference, src, dest); } } else @@ -1016,12 +1010,14 @@ static void purge_interference_where_preference(void) { int i; - for (i=0; ireplaced_by) - array_appendu(&replaced, left); - if (right->replaced_by) - array_appendu(&replaced, right); + struct vertex_iterator vit = {}; + while (graph_next_vertex(&interferenceg, &vit)) + { + struct anode* anode = vit.data; + if (anode->replaced_by) + array_appendu(&replaced, anode); + } } - for (i=0; ireplaced_by) - array_appendu(&replaced, src); - if (dest->replaced_by) - array_appendu(&replaced, dest); + struct vertex_iterator vit = {}; + while (graph_next_vertex(&preferenceg, &vit)) + { + struct anode* anode = vit.data; + if (anode->replaced_by) + array_appendu(&replaced, anode); + } } tracef('R', "R: found %d replaced anodes\n", replaced.count); for (i=0; i