get_Psi_n_conds() added
authorMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Thu, 23 Mar 2006 12:36:51 +0000 (12:36 +0000)
committerMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Thu, 23 Mar 2006 12:36:51 +0000 (12:36 +0000)
[r7510]

ir/ir/irnode.c
ir/ir/irnode.h
ir/ir/irnode_t.h

index cec30c7..13ccab7 100644 (file)
@@ -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);
index ded66c5..0e58616 100644 (file)
@@ -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!
index 2ce1f91..d4705fc 100644 (file)
@@ -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_ */