fix missing keep walker missing some cases
[libfirm] / ir / opt / critical_edges.c
index cca885a..4717244 100644 (file)
@@ -46,10 +46,11 @@ typedef struct cf_env {
  * @param n   IR node
  * @param env Environment of walker.
  */
-static void walk_critical_cf_edges(ir_node *n, void *env) {
+static void walk_critical_cf_edges(ir_node *n, void *env)
+{
        int arity, i;
        ir_node *pre, *block, *jmp;
-       cf_env *cenv = env;
+       cf_env *cenv = (cf_env*)env;
        ir_graph *irg = get_irn_irg(n);
 
        /* Block has multiple predecessors */
@@ -85,7 +86,7 @@ insert:
                                /* set predecessor of new block */
                                block = new_r_Block(irg, 1, &pre);
                                /* insert new jmp node to new block */
-                               jmp = new_r_Jmp(irg, block);
+                               jmp = new_r_Jmp(block);
                                /* set successor of new block */
                                set_irn_n(n, i, jmp);
                                cenv->changed = 1;
@@ -94,7 +95,8 @@ insert:
        } /* n is a multi-entry block */
 }
 
-void remove_critical_cf_edges_ex(ir_graph *irg, int ignore_exception_edges) {
+void remove_critical_cf_edges_ex(ir_graph *irg, int ignore_exception_edges)
+{
        cf_env env;
 
        env.ignore_exc_edges = (char)ignore_exception_edges;
@@ -110,6 +112,7 @@ void remove_critical_cf_edges_ex(ir_graph *irg, int ignore_exception_edges) {
        }
 }
 
-void remove_critical_cf_edges(ir_graph *irg) {
+void remove_critical_cf_edges(ir_graph *irg)
+{
        remove_critical_cf_edges_ex(irg, 1);
 }