- BugFix: get_pnc_string() can only handle default pn_Cmp_* numbers
[libfirm] / ir / be / ia32 / ia32_optimize.c
index 40735ae..73ff3ba 100644 (file)
@@ -61,8 +61,6 @@ DEBUG_ONLY(static firm_dbg_module_t *dbg = NULL;)
 static const arch_env_t *arch_env;
 static ia32_code_gen_t  *cg;
 
-static void peephole_IncSP_IncSP(ir_node *node);
-
 #if 0
 static void peephole_ia32_Store_IncSP_to_push(ir_node *node)
 {
@@ -95,7 +93,7 @@ static void peephole_ia32_Store_IncSP_to_push(ir_node *node)
        if(!be_is_IncSP(incsp))
                return;
 
-       peephole_IncSP_IncSP(incsp);
+       be_peephole_IncSP_IncSP(incsp);
 
        /* must be in the same block */
        if(get_nodes_block(incsp) != get_nodes_block(node))
@@ -477,58 +475,6 @@ static void peephole_IncSP_Store_to_push(ir_node *irn)
        be_set_IncSP_pred(irn, curr_sp);
 }
 
-/**
- * Tries to optimize two following IncSP.
- */
-static void peephole_IncSP_IncSP(ir_node *node)
-{
-       int      pred_offs;
-       int      curr_offs;
-       int      offs;
-       ir_node *pred = be_get_IncSP_pred(node);
-       ir_node *predpred;
-
-       if(!be_is_IncSP(pred))
-               return;
-
-       if(get_irn_n_edges(pred) > 1)
-               return;
-
-       pred_offs = be_get_IncSP_offset(pred);
-       curr_offs = be_get_IncSP_offset(node);
-
-       if(pred_offs == BE_STACK_FRAME_SIZE_EXPAND) {
-               if(curr_offs != BE_STACK_FRAME_SIZE_SHRINK) {
-                       return;
-               }
-               offs = 0;
-       } else if(pred_offs == BE_STACK_FRAME_SIZE_SHRINK) {
-               if(curr_offs != BE_STACK_FRAME_SIZE_EXPAND) {
-                       return;
-               }
-               offs = 0;
-       } else if(curr_offs == BE_STACK_FRAME_SIZE_EXPAND
-                       || curr_offs == BE_STACK_FRAME_SIZE_SHRINK) {
-               return;
-       } else {
-               offs = curr_offs + pred_offs;
-       }
-
-       /* add pred offset to ours and remove pred IncSP */
-       be_set_IncSP_offset(node, offs);
-
-       predpred = be_get_IncSP_pred(pred);
-       be_peephole_before_exchange(pred, predpred);
-
-       /* rewire dependency edges */
-       edges_reroute_kind(pred, predpred, EDGE_KIND_DEP, current_ir_graph);
-       be_set_IncSP_pred(node, predpred);
-       sched_remove(pred);
-       be_kill_node(pred);
-
-       be_peephole_after_exchange(predpred);
-}
-
 /**
  * Find a free GP register if possible, else return NULL.
  */
@@ -634,7 +580,7 @@ static void peephole_be_IncSP(ir_node *node)
        int                    offset;
 
        /* first optimize incsp->incsp combinations */
-       peephole_IncSP_IncSP(node);
+       be_peephole_IncSP_IncSP(node);
 
        /* transform IncSP->Store combinations to Push where possible */
        peephole_IncSP_Store_to_push(node);