/* Walks back from n until it finds a real cf op. */ static ir_node *get_cf_op(ir_node *n) { while (!is_cfop(n) && !is_fragile_op(n) && !is_Bad(n)) { n = skip_Tuple(n); n = skip_Proj(n); } return n; }
int is_irn_const_expression(ir_node *n) { /* we are in danger iff an exception will arise. TODO: be more precisely, * for instance Div. will NOT rise if divisor != 0 */ if (is_binop(n) && !is_fragile_op(n)) return is_irn_const_expression(get_binop_left(n)) && is_irn_const_expression(get_binop_right(n)); switch (get_irn_opcode(n)) { case iro_Const: case iro_SymConst: case iro_Unknown: return 1; case iro_Conv: return is_irn_const_expression(get_irn_n(n, 0)); default: break; } return 0; }