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)