X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firnode.c;h=502c6330157232183f6ab7708b7772da6f6e13ea;hb=53db8c6b991513550a39ed328d664746fe78f8af;hp=cec30c774b640b7fcf3fc9c95d02ac5455199b01;hpb=ef2b291b6f9191c63684513962ea516cba8f94e5;p=libfirm diff --git a/ir/ir/irnode.c b/ir/ir/irnode.c index cec30c774..502c63301 100644 --- a/ir/ir/irnode.c +++ b/ir/ir/irnode.c @@ -2005,28 +2005,28 @@ void set_Mux_true (ir_node *node, ir_node *ir_true) { /* Psi support */ ir_node *get_Psi_cond (ir_node *node, int pos) { - int num_conds = get_irn_arity(node) >> 1; + int num_conds = get_Psi_n_conds(node); assert(node->op == op_Psi); assert(pos < num_conds); return node->in[1 + 2 * pos]; } void set_Psi_cond (ir_node *node, int pos, ir_node *cond) { - int num_conds = get_irn_arity(node) >> 1; + int num_conds = get_Psi_n_conds(node); assert(node->op == op_Psi); assert(pos < num_conds); node->in[1 + 2 * pos] = cond; } ir_node *get_Psi_val (ir_node *node, int pos) { - int num_vals = get_irn_arity(node) >> 1; + int num_vals = get_Psi_n_conds(node); assert(node->op == op_Psi); assert(pos < num_vals); return node->in[1 + 2 * pos + 1]; } void set_Psi_val (ir_node *node, int pos, ir_node *val) { - int num_vals = get_irn_arity(node) >> 1; + int num_vals = get_Psi_n_conds(node); assert(node->op == op_Psi); assert(pos < num_vals); node->in[1 + 2 * pos + 1] = val; @@ -2044,6 +2044,10 @@ void set_Psi_default(ir_node *node, ir_node *val) { node->in[def_pos] = node; } +int (get_Psi_n_conds)(ir_node *node) { + return _get_Psi_n_conds(node); +} + /* CopyB support */ ir_node *get_CopyB_mem (ir_node *node) { assert (node->op == op_CopyB); @@ -2406,6 +2410,12 @@ int return _is_Sel(node); } +/* returns true if node is a Mux node or a Psi with only one condition. */ +int +(is_Mux)(const ir_node *node) { + return _is_Mux(node); +} + int is_Proj (const ir_node *node) { assert(node);