From b8dbf835753fe9cecd9d6106034ececa3c3ef148 Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Thu, 23 Mar 2006 12:36:51 +0000 Subject: [PATCH] get_Psi_n_conds() added [r7510] --- ir/ir/irnode.c | 12 ++++++++---- ir/ir/irnode.h | 1 + ir/ir/irnode_t.h | 6 ++++++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/ir/ir/irnode.c b/ir/ir/irnode.c index cec30c774..13ccab79d 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); diff --git a/ir/ir/irnode.h b/ir/ir/irnode.h index ded66c56d..0e5861674 100644 --- a/ir/ir/irnode.h +++ b/ir/ir/irnode.h @@ -925,6 +925,7 @@ ir_node *get_Psi_val (ir_node *node, int pos); void set_Psi_val (ir_node *node, int pos, ir_node *val); ir_node *get_Psi_default(ir_node *node); void set_Psi_default(ir_node *node, ir_node *val); +int get_Psi_n_conds(ir_node *node); /** * Projection numbers for result of CopyB node: use for Proj nodes! diff --git a/ir/ir/irnode_t.h b/ir/ir/irnode_t.h index 2ce1f91ad..d4705fc2b 100644 --- a/ir/ir/irnode_t.h +++ b/ir/ir/irnode_t.h @@ -773,6 +773,11 @@ static INLINE void _set_Cond_jmp_pred(ir_node *node, cond_jmp_predicate pred) { node->attr.c.pred = pred; } +static INLINE int _get_Psi_n_conds(ir_node *node) { + assert(_get_irn_op(node) == op_Psi); + return _get_irn_arity(node) >> 1; +} + /* this section MUST contain all inline functions */ #define is_ir_node(thing) _is_ir_node(thing) #define get_irn_intra_arity(node) _get_irn_intra_arity(node) @@ -824,5 +829,6 @@ static INLINE void _set_Cond_jmp_pred(ir_node *node, cond_jmp_predicate pred) { #define is_irn_keep(node) _is_irn_keep(node) #define get_Cond_jmp_pred(node) _get_Cond_jmp_pred(node) #define set_Cond_jmp_pred(node, pred) _set_Cond_jmp_pred(node, pred) +#define get_Psi_n_conds(node) _get_Psi_n_conds(node) # endif /* _IRNODE_T_H_ */ -- 2.20.1