state = _get_op_pinned(_get_irn_op(node));
if (state >= op_pin_state_exc_pinned)
- return node->attr.except.pin_state;
+ return (op_pin_state)node->attr.except.pin_state;
return state;
}
*/
static inline ir_node *_get_Block_cfgpred_block(const ir_node *node, int pos)
{
- ir_node *res = skip_Proj(get_Block_cfgpred(node, pos));
- if (!is_Bad(res))
- res = get_nodes_block(res);
- return res;
+ ir_node *res = get_Block_cfgpred(node, pos);
+ if (is_Bad(res)) {
+ /* must return a Bad with mode_BB! */
+ ir_graph *irg = get_irn_irg(node);
+ return new_r_Bad(irg, mode_BB);
+ } else {
+ return get_nodes_block(skip_Proj(res));
+ }
}
static inline ir_visited_t _get_Block_block_visited(const ir_node *node)
return node->attr.block.block_visited >= get_irg_block_visited(irg);
}
-static inline ir_node *_set_Block_dead(ir_node *block)
-{
- assert(_get_irn_op(block) == op_Block);
- block->attr.block.dom.dom_depth = -1;
- block->attr.block.is_dead = 1;
- return block;
-}
-
-static inline int _is_Block_dead(const ir_node *block)
-{
- ir_op *op = _get_irn_op(block);
-
- /* we can have Bad, Anchor and Block nodes as block input */
- if (op == op_Bad) {
- return 1;
- } else if (op == op_Anchor) {
- return 0;
- } else {
- assert(op == op_Block);
- return block->attr.block.is_dead;
- }
-}
-
static inline ir_graph *_get_Block_irg(const ir_node *block)
{
assert(is_Block(block));
/** Add a Phi node to the list of Block Phi's. */
static inline void _add_Block_phi(ir_node *block, ir_node *phi)
{
+ assert(_is_Block(block));
_set_Phi_next(phi, _get_Block_phis(block));
_set_Block_phis(block, phi);
}
return pn_Start_T_args == get_Proj_proj(node) && is_Start(get_Proj_pred(node));
}
-static inline pn_Cmp _get_Proj_pn_cmp(const ir_node *node)
-{
- assert(is_Cmp(get_Proj_pred(node)));
- return (pn_Cmp)get_Proj_proj(node);
-}
-
/** initialize ir_node module */
void init_irnode(void);
#define set_Block_block_visited(node, visit) _set_Block_block_visited(node, visit)
#define mark_Block_block_visited(node) _mark_Block_block_visited(node)
#define Block_block_visited(node) _Block_block_visited(node)
-#define set_Block_dead(block) _set_Block_dead(block)
-#define is_Block_dead(block) _is_Block_dead(block)
#define get_Block_irg(block) _get_Block_irg(block)
#define get_Const_tarval(node) _get_Const_tarval(node)
#define is_Const_null(node) _is_Const_null(node)
#define is_arg_Proj(node) _is_arg_Proj(node)
-#define get_Proj_pn_cmp(node) _get_Proj_pn_cmp(node)
-
#endif