X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fstat%2Fstat_liveness.c;h=53931316ad3e930d364c3c367a16a79a3efb9154;hb=7fc5212efdd0faf06fed3850760ca319bdc66afc;hp=e98b515c6514330c10445a78634855ae7b9bb6d2;hpb=c8248af523d96133390bdd3362ae32c5d48bb714;p=libfirm diff --git a/ir/stat/stat_liveness.c b/ir/stat/stat_liveness.c index e98b515c6..53931316a 100644 --- a/ir/stat/stat_liveness.c +++ b/ir/stat/stat_liveness.c @@ -44,7 +44,7 @@ struct block_entry_t { struct environment_t { struct obstack obst; block_entry_t *entries; /**< List of all allocated block entries. */ - void *visited; /**< a Bitset to mark visited nodes */ + bitset_t *visited; /**< a Bitset to mark visited nodes */ }; static environment_t *env; @@ -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) { - block_entry_t *entry = get_irn_link(block); +static block_entry_t *get_block_entry(ir_node *block) +{ + block_entry_t *entry = (block_entry_t*)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)) { @@ -188,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;