ir_graph *irg;
unsigned long block_visited; /**< for the walker that walks over all blocks. */
/* Attributes private to construction: */
- int matured:1; /**< if set, all in-nodes of the block are fixed */
- int dead:1; /**< if set, the block is dead (and could be replace by a Bad */
+ unsigned matured:1; /**< if set, all in-nodes of the block are fixed */
+ unsigned dead:1; /**< if set, the block is dead (and could be replace by a Bad */
struct ir_node **graph_arr; /**< array to store all parameters */
/* Attributes holding analyses information */
struct dom_info dom; /**< Datastructure that holds information about dominators.
/** Cond attributes */
typedef struct {
- cond_kind kind; /**< flavor of Cond */
- long default_proj; /**< for optimization: biggest Proj number, i.e. the one
- used for default. */
+ cond_kind kind; /**< flavor of Cond */
+ long default_proj; /**< only for non-binary Conds: biggest Proj number, i.e. the one used for default. */
+ cond_jmp_predicate pred; /**< only for binary Conds: The jump predication. */
} cond_attr;
/** Const attributes */
/* Get the predecessor block.
*
- * Returns the block corresonding to the predecessor pos.
+ * Returns the block corresponding to the predecessor pos.
*
* There are several ambiguities we resolve with this function:
* - The direct predecessor can be a Proj, which is not pinned.
return CNST_NO_CONST;
}
+static INLINE int _is_irn_forking(const ir_node *node) {
+ return is_op_forking(_get_irn_op(node));
+}
+
static INLINE type *_get_irn_type(ir_node *node) {
return _get_irn_op(node)->get_type(node);
}
+static INLINE int _is_irn_constlike(const ir_node *node) {
+ return is_op_constlike(_get_irn_op(node));
+}
+
+static INLINE cond_jmp_predicate _get_Cond_jmp_pred(ir_node *node) {
+ assert (_get_irn_op(node) == op_Cond);
+ return node->attr.c.pred;
+}
+
+static INLINE void _set_Cond_jmp_pred(ir_node *node, cond_jmp_predicate pred) {
+ assert (_get_irn_op(node) == op_Cond);
+ node->attr.c.pred = pred;
+}
+
/* 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)
#define is_Block_dead(block) _is_Block_dead(block)
#define get_Const_tarval(node) _get_Const_tarval(node)
#define classify_Const(node) _classify_Const(node)
+#define is_irn_forking(node) _is_irn_forking(node)
#define get_irn_type(node) _get_irn_type(node)
+#define is_irn_constlike(node) _is_irn_constlike(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)
# endif /* _IRNODE_T_H_ */