X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Fircons.c;h=06c627bf04723a5217a8cf8f2120f8bf8d74d7fa;hb=00d3df180d69e4e3fd0b05de4d066667ca8c6e8e;hp=7c8c1ff9accdcd63c9cc078e46e76c78ae2c242d;hpb=ea0e2807b3d81a2e8badf222986bcb1504796f38;p=libfirm diff --git a/ir/ir/ircons.c b/ir/ir/ircons.c index 7c8c1ff9a..06c627bf0 100644 --- a/ir/ir/ircons.c +++ b/ir/ir/ircons.c @@ -71,13 +71,12 @@ ir_node *new_rd_ASM(dbg_info *db, ir_node *block, ir_node *mem, ir_node *res = new_ir_node(db, irg, block, op_ASM, mode_T, r_arity, r_in); - res->attr.assem.pin_state = op_pin_state_pinned; - res->attr.assem.input_constraints - = NEW_ARR_D(ir_asm_constraint, irg->obst, arity); - res->attr.assem.output_constraints - = NEW_ARR_D(ir_asm_constraint, irg->obst, n_outs); - res->attr.assem.clobbers = NEW_ARR_D(ident *, irg->obst, n_clobber); - res->attr.assem.text = text; + struct obstack *const obst = get_irg_obstack(irg); + res->attr.assem.pin_state = op_pin_state_pinned; + res->attr.assem.input_constraints = NEW_ARR_D(ir_asm_constraint, obst, arity); + res->attr.assem.output_constraints = NEW_ARR_D(ir_asm_constraint, obst, n_outs); + res->attr.assem.clobbers = NEW_ARR_D(ident*, obst, n_clobber); + res->attr.assem.text = text; memcpy(res->attr.assem.input_constraints, inputs, sizeof(inputs[0]) * arity); memcpy(res->attr.assem.output_constraints, outputs, sizeof(outputs[0]) * n_outs); @@ -235,7 +234,7 @@ static ir_node *set_phi_arguments(ir_node *phi, int pos) in[i] = value; } - phi->attr.phi.u.backedge = new_backedge_arr(irg->obst, arity); + phi->attr.phi.u.backedge = new_backedge_arr(get_irg_obstack(irg), arity); set_irn_in(phi, arity, in); irn_verify_irg(phi, irg); @@ -312,7 +311,6 @@ void mature_immBlock(ir_node *block) size_t n_preds; ir_node *next; ir_node *phi; - ir_node **new_in; ir_graph *irg; assert(is_Block(block)); @@ -322,7 +320,7 @@ void mature_immBlock(ir_node *block) irg = get_irn_irg(block); n_preds = ARR_LEN(block->in) - 1; /* Fix block parameters */ - block->attr.block.backedge = new_backedge_arr(irg->obst, n_preds); + block->attr.block.backedge = new_backedge_arr(get_irg_obstack(irg), n_preds); /* Traverse a chain of Phi nodes attached to this block and mature these, too. */ @@ -341,8 +339,7 @@ void mature_immBlock(ir_node *block) /* create final in-array for the block */ if (block->attr.block.dynamic_ins) { - new_in = NEW_ARR_D(ir_node*, irg->obst, n_preds+1); - memcpy(new_in, block->in, (n_preds+1) * sizeof(new_in[0])); + ir_node **const new_in = DUP_ARR_D(ir_node*, get_irg_obstack(irg), block->in); DEL_ARR_F(block->in); block->in = new_in; block->attr.block.dynamic_ins = false; @@ -445,8 +442,7 @@ ir_node *new_rd_immBlock(dbg_info *dbgi, ir_graph *irg) set_Block_block_visited(res, 0); /* Create and initialize array for Phi-node construction. */ - res->attr.block.graph_arr = NEW_ARR_D(ir_node *, irg->obst, irg->n_loc); - memset(res->attr.block.graph_arr, 0, sizeof(ir_node*) * irg->n_loc); + res->attr.block.graph_arr = NEW_ARR_DZ(ir_node*, get_irg_obstack(irg), irg->n_loc); /* Immature block may not be optimized! */ irn_verify_irg(res, irg); @@ -715,12 +711,11 @@ ir_node *new_r_Block_noopt(ir_graph *irg, int arity, ir_node *in[]) { ir_node *res = new_ir_node(NULL, irg, NULL, op_Block, mode_BB, arity, in); res->attr.block.irg.irg = irg; - res->attr.block.backedge = new_backedge_arr(irg->obst, arity); + res->attr.block.backedge = new_backedge_arr(get_irg_obstack(irg), arity); set_Block_matured(res, 1); /* Create and initialize array for Phi-node construction. */ if (irg_is_constrained(irg, IR_GRAPH_CONSTRAINT_CONSTRUCTION)) { - res->attr.block.graph_arr = NEW_ARR_D(ir_node *, irg->obst, irg->n_loc); - memset(res->attr.block.graph_arr, 0, irg->n_loc * sizeof(ir_node*)); + res->attr.block.graph_arr = NEW_ARR_DZ(ir_node*, get_irg_obstack(irg), irg->n_loc); } irn_verify_irg(res, irg); return res;