From: David Given Date: Wed, 5 Oct 2016 21:55:38 +0000 (+0200) Subject: The register allocator is really a pass, so arrange the code like one. X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=d20b63dc947b70ef0ccf9a500354bd6f57a38cc6;p=ack.git The register allocator is really a pass, so arrange the code like one. --- diff --git a/mach/proto/mcg/mcg.h b/mach/proto/mcg/mcg.h index 1fdb7d96c..5d631e224 100644 --- a/mach/proto/mcg/mcg.h +++ b/mach/proto/mcg/mcg.h @@ -107,11 +107,10 @@ extern void pass_eliminate_trivial_blocks(struct procedure* proc); extern void pass_group_irs(struct procedure* proc); extern void pass_instruction_selector(struct procedure* proc); extern void pass_promote_float_ops(struct procedure* proc); +extern void pass_register_allocator(struct procedure* proc); extern void pass_remove_dead_blocks(struct procedure* proc); extern void pass_split_critical_edges(struct procedure* proc); -extern void register_allocator(struct procedure* proc); - #endif /* vim: set sw=4 ts=4 expandtab : */ diff --git a/mach/proto/mcg/registerallocator.c b/mach/proto/mcg/pass_registerallocator.c similarity index 92% rename from mach/proto/mcg/registerallocator.c rename to mach/proto/mcg/pass_registerallocator.c index 664245826..27e421418 100644 --- a/mach/proto/mcg/registerallocator.c +++ b/mach/proto/mcg/pass_registerallocator.c @@ -20,7 +20,7 @@ static void recursively_walk_dominance_graph(struct basicblock* bb) } } -void register_allocator(struct procedure* proc) +void pass_register_allocator(struct procedure* proc) { calculate_dominance_graph(proc); diff --git a/mach/proto/mcg/procedure.c b/mach/proto/mcg/procedure.c index 8d0f83953..8685df54d 100644 --- a/mach/proto/mcg/procedure.c +++ b/mach/proto/mcg/procedure.c @@ -49,7 +49,9 @@ void procedure_compile(struct procedure* proc) pass_remove_dead_blocks(proc); procedure_update_bb_graph(proc); - /* Passes from here on can't alter the BB graph */ + + /* Passes from here on can't alter the BB graph without also updating prevs + * and nexts. */ print_blocks('2', proc); pass_convert_stack_ops(proc); @@ -62,8 +64,7 @@ void procedure_compile(struct procedure* proc) print_blocks('6', proc); pass_instruction_selector(proc); - - register_allocator(proc); + pass_register_allocator(proc); } static bool collect_outputs_cb(struct ir* ir, void* user)