bearch: Disallow passing Projs to get_irn_ops().
[libfirm] / ir / be / bearch.c
index 5cd7cba..711c301 100644 (file)
@@ -1,20 +1,6 @@
 /*
- * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
- *
  * This file is part of libFirm.
- *
- * This file may be distributed and/or modified under the terms of the
- * GNU General Public License version 2 as published by the Free Software
- * Foundation and appearing in the file LICENSE.GPL included in the
- * packaging of this file.
- *
- * Licensees holding valid libFirm Professional Edition licenses may use
- * this file in accordance with the libFirm Commercial License.
- * Agreement provided with the Software.
- *
- * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
- * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
+ * Copyright (C) 2012 University of Karlsruhe.
  */
 
 /**
@@ -55,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;
 }
 
@@ -98,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)