X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fstat%2Fstat_liveness.c;h=ac4ce949d6336262ae76dbac7cdfce8045a55c8b;hb=04321ea9f9ac1185bd7092813c34683aa15cd05f;hp=95872bfc62f5162cdae5ff888103d1a7d41320d5;hpb=a24fd0c180d302c5ba5e582bdc72d23fd4d024b6;p=libfirm diff --git a/ir/stat/stat_liveness.c b/ir/stat/stat_liveness.c index 95872bfc6..ac4ce949d 100644 --- a/ir/stat/stat_liveness.c +++ b/ir/stat/stat_liveness.c @@ -52,11 +52,12 @@ static environment_t *env; /** * Get the block entry or allocate one if not yet assigned. */ -static block_entry_t *get_block_entry(ir_node *block) { +static block_entry_t *get_block_entry(ir_node *block) +{ block_entry_t *entry = get_irn_link(block); if (entry == NULL) { - entry = obstack_alloc(&env->obst, sizeof(*entry)); + entry = OALLOC(&env->obst, block_entry_t); entry->live_ins = NEW_ARR_F(ir_node *, 0); entry->live_outs = NEW_ARR_F(ir_node *, 0); @@ -67,7 +68,8 @@ static block_entry_t *get_block_entry(ir_node *block) { return entry; } -static void add_entry(ir_node ***arr, ir_node *irn) { +static void add_entry(ir_node ***arr, ir_node *irn) +{ ir_node **list = *arr; int i; @@ -80,13 +82,15 @@ static void add_entry(ir_node ***arr, ir_node *irn) { ARR_APP1(ir_node *, *arr, irn); } -static void add_live_in(ir_node *block, ir_node *irn) { +static void add_live_in(ir_node *block, ir_node *irn) +{ block_entry_t *entry = get_block_entry(block); add_entry(&entry->live_ins, irn); } -static void add_live_out(ir_node *block, ir_node *irn) { +static void add_live_out(ir_node *block, ir_node *irn) +{ block_entry_t *entry = get_block_entry(block); add_entry(&entry->live_outs, irn); @@ -100,7 +104,8 @@ static void add_live_out(ir_node *block, ir_node *irn) { * @param def The node (value). * @param block The block to mark the value live out of. */ -static void live_end_at_block(ir_node *def, ir_node *block) { +static void live_end_at_block(ir_node *def, ir_node *block) +{ add_live_out(block, def); if (is_irn_constlike(def)) { @@ -131,11 +136,14 @@ static void live_end_at_block(ir_node *def, ir_node *block) { /** * Walker: finds live-outs and calculate live-ins from that. */ -static void find_live_outs(ir_node *irn, void *ctx) { +static void find_live_outs(ir_node *irn, void *ctx) +{ ir_mode *mode = get_irn_mode(irn); ir_node *block, *use_block; int i; + (void)ctx; + /* only data nodes */ if (! mode_is_datab(mode)) return; @@ -185,7 +193,8 @@ static void find_live_outs(ir_node *irn, void *ctx) { * Calculate the live-in and live out of blocks for datab nodes. * Use it to estimate register pressure. */ -void stat_liveness(ir_graph *irg) { +void stat_liveness(ir_graph *irg) +{ environment_t genv; block_entry_t *p;