X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firnode.c;h=c767793fa05114e8e4d87258e54c74580524c4c9;hb=9b56fd8f96da9542caf597ad1d5d71bae56e09f9;hp=753bb6d992d1ba56c9633c963d37cb10bfea89a3;hpb=9203a8ccc3e43e643841ee88e09a2c419846f530;p=libfirm diff --git a/ir/ir/irnode.c b/ir/ir/irnode.c index 753bb6d99..c767793fa 100644 --- a/ir/ir/irnode.c +++ b/ir/ir/irnode.c @@ -238,17 +238,24 @@ set_irn_in (ir_node *node, int arity, ir_node **in) { } else { arr = &node->in; } - if (arity != ARR_LEN(*arr) - 1) { + + for (i = 0; i < arity; i++) { + if (i < ARR_LEN(*arr)-1) + edges_notify_edge(node, i, in[i], (*arr)[i+1], current_ir_graph); + else + edges_notify_edge(node, i, in[i], NULL, current_ir_graph); + } + for(;i < ARR_LEN(*arr)-1; i++) { + edges_notify_edge(node, i, NULL, (*arr)[i+1], current_ir_graph); + } + + if (arity != ARR_LEN(*arr) - 1) { ir_node * block = (*arr)[0]; *arr = NEW_ARR_D(ir_node *, current_ir_graph->obst, arity + 1); (*arr)[0] = block; } fix_backedges(current_ir_graph->obst, node); - for (i = 0; i < arity; i++) { - edges_notify_edge(node, i, in[i], (*arr)[i+1], current_ir_graph); - } - memcpy((*arr) + 1, in, sizeof(ir_node *) * arity); } @@ -642,14 +649,14 @@ ir_node * return _get_Block_cfgpred_block(node, pos); } -bool +int get_Block_matured (ir_node *node) { assert (node->op == op_Block); - return node->attr.block.matured; + return (int)node->attr.block.matured; } void -set_Block_matured (ir_node *node, bool matured) { +set_Block_matured (ir_node *node, int matured) { assert (node->op == op_Block); node->attr.block.matured = matured; } @@ -697,7 +704,7 @@ void set_Block_cg_cfgpred_arr(ir_node * node, int arity, ir_node ** in) { /* Fix backedge array. fix_backedges() operates depending on interprocedural_view. */ int ipv = get_interprocedural_view(); - set_interprocedural_view(true); + set_interprocedural_view(1); fix_backedges(current_ir_graph->obst, node); set_interprocedural_view(ipv); } @@ -1415,7 +1422,7 @@ int is_Cast_upcast(ir_node *node) { assert(fromtype); - if (!is_Class_type(totype)) return false; + if (!is_Class_type(totype)) return 0; return is_subclass_of(fromtype, totype); } @@ -1437,7 +1444,7 @@ int is_Cast_downcast(ir_node *node) { assert(fromtype); - if (!is_Class_type(totype)) return false; + if (!is_Class_type(totype)) return 0; return is_subclass_of(totype, fromtype); }