bearch: Disallow passing Projs to get_irn_ops().
[libfirm] / ir / be / bearch.c
index 0989ab8..711c301 100644 (file)
@@ -41,14 +41,9 @@ arch_register_req_t const arch_no_requirement = {
  */
 static const arch_irn_ops_t *get_irn_ops(const ir_node *irn)
 {
-       if (is_Proj(irn)) {
-               irn = get_Proj_pred(irn);
-               assert(!is_Proj(irn));
-       }
-
-       ir_op                *ops    = get_irn_op(irn);
-       const arch_irn_ops_t *be_ops = get_op_ops(ops)->be_ops;
-
+       ir_op          const *const op     = get_irn_op(irn);
+       arch_irn_ops_t const *const be_ops = get_op_ops(op)->be_ops;
+       assert(be_ops);
        return be_ops;
 }
 
@@ -84,12 +79,7 @@ int arch_possible_memory_operand(const ir_node *irn, unsigned int i)
 void arch_perform_memory_operand(ir_node *irn, ir_node *spill, unsigned int i)
 {
        const arch_irn_ops_t *ops = get_irn_ops(irn);
-
-       if (ops->perform_memory_operand) {
-               ops->perform_memory_operand(irn, spill, i);
-       } else {
-               return;
-       }
+       ops->perform_memory_operand(irn, spill, i);
 }
 
 int arch_get_op_estimated_cost(const ir_node *irn)