remove old+unused code
[libfirm] / ir / be / ia32 / ia32_optimize.c
index 82b20a3..671b4aa 100644 (file)
@@ -53,7 +53,6 @@
 #include "ia32_common_transform.h"
 #include "ia32_transform.h"
 #include "ia32_dbg_stat.h"
-#include "ia32_util.h"
 #include "ia32_architecture.h"
 
 DEBUG_ONLY(static firm_dbg_module_t *dbg = NULL;)
@@ -221,14 +220,15 @@ static void peephole_ia32_Test(ir_node *node)
                ir_node         *flags_proj;
                ir_mode         *flags_mode;
                ir_node         *schedpoint;
+               ir_node         *op = left;
                const ir_edge_t *edge;
 
                if (get_nodes_block(left) != block)
                        return;
 
-               if (is_Proj(left)) {
-                       pn   = get_Proj_proj(left);
-                       left = get_Proj_pred(left);
+               if (is_Proj(op)) {
+                       pn = get_Proj_proj(op);
+                       op = get_Proj_pred(op);
                }
 
                /* walk schedule up and abort when we find left or some other node
@@ -236,7 +236,7 @@ static void peephole_ia32_Test(ir_node *node)
                schedpoint = node;
                for (;;) {
                        schedpoint = sched_prev(schedpoint);
-                       if (schedpoint == left)
+                       if (schedpoint == op)
                                break;
                        if (arch_irn_is(schedpoint, modify_flags))
                                return;
@@ -254,7 +254,7 @@ static void peephole_ia32_Test(ir_node *node)
                        }
                }
 
-               switch (produces_test_flag(left, pn)) {
+               switch (produces_test_flag(op, pn)) {
                        case produces_flag_zero:
                                break;
 
@@ -276,21 +276,24 @@ static void peephole_ia32_Test(ir_node *node)
                                return;
                }
 
-               if (get_irn_mode(left) != mode_T) {
-                       set_irn_mode(left, mode_T);
+               if (get_irn_mode(op) != mode_T) {
+                       set_irn_mode(op, mode_T);
 
                        /* If there are other users, reroute them to result proj */
-                       if (get_irn_n_edges(left) != 2) {
-                               ir_node *res = new_r_Proj(left, mode_Iu, pn_ia32_res);
+                       if (get_irn_n_edges(op) != 2) {
+                               ir_node *res = new_r_Proj(op, mode_Iu, pn_ia32_res);
 
-                               edges_reroute(left, res, current_ir_graph);
+                               edges_reroute(op, res);
                                /* Reattach the result proj to left */
-                               set_Proj_pred(res, left);
+                               set_Proj_pred(res, op);
                        }
+               } else {
+                       if (get_irn_n_edges(left) == 2)
+                               kill_node(left);
                }
 
                flags_mode = ia32_reg_classes[CLASS_ia32_flags].mode;
-               flags_proj = new_r_Proj(left, flags_mode, pn_ia32_flags);
+               flags_proj = new_r_Proj(op, flags_mode, pn_ia32_flags);
                arch_set_irn_register(flags_proj, &ia32_registers[REG_EFLAGS]);
 
                assert(get_irn_mode(node) != mode_T);
@@ -578,8 +581,8 @@ static void peephole_store_incsp(ir_node *store)
        /* we have to be at offset 0 */
        int my_offset = get_ia32_am_offs_int(store);
        if (my_offset != 0) {
-               /* TODO here: find out wether there is a store with offset 0 before
-                * us and wether we can move it down to our place */
+               /* TODO here: find out whether there is a store with offset 0 before
+                * us and whether we can move it down to our place */
                return;
        }
        ir_mode *ls_mode = get_ia32_ls_mode(store);
@@ -1271,7 +1274,7 @@ void ia32_peephole_optimization(ir_graph *irg)
 
 /**
  * Removes node from schedule if it is not used anymore. If irn is a mode_T node
- * all it's Projs are removed as well.
+ * all its Projs are removed as well.
  * @param irn  The irn to be removed from schedule
  */
 static inline void try_kill(ir_node *node)