reuse is_switch_Cond function
[libfirm] / ir / opt / opt_inline.c
index 309e694..85577c6 100644 (file)
@@ -343,10 +343,8 @@ int inline_method(ir_node *call, ir_graph *called_graph)
        assert(get_irg_phase_state(irg) != phase_building);
        assert(get_irg_pinned(irg) == op_pin_state_pinned);
        assert(get_irg_pinned(called_graph) == op_pin_state_pinned);
-       set_irg_outs_inconsistent(irg);
        set_irg_extblk_inconsistent(irg);
        set_irg_doms_inconsistent(irg);
-       set_irg_loopinfo_inconsistent(irg);
        set_irg_callee_info_state(irg, irg_callee_info_inconsistent);
        set_irg_entity_usage_state(irg, ir_entity_usage_not_computed);
        edges_deactivate(irg);
@@ -532,11 +530,9 @@ int inline_method(ir_node *call, ir_graph *called_graph)
                                }
                        }
                        if (n_ret > 0) {
-                               ir_mode *mode = get_irn_mode(cf_pred[0]);
-                               phi = new_r_Phi(post_bl, n_ret, cf_pred, mode);
+                               phi = new_r_Phi(post_bl, n_ret, cf_pred, res_mode);
                        } else {
-                               ir_mode *mode = get_irn_mode(cf_pred[0]);
-                               phi = new_r_Bad(irg, mode);
+                               phi = new_r_Bad(irg, res_mode);
                        }
                        res_pred[j] = phi;
                        /* Conserve Phi-list for further inlinings -- but might be optimized */
@@ -1639,6 +1635,7 @@ static void inline_into(ir_graph *irg, unsigned maxsize,
                        set_irg_link(copy, callee_env);
 
                        assure_cf_loop(copy);
+                       memset(&wenv, 0, sizeof(wenv));
                        wenv.x              = callee_env;
                        wenv.ignore_callers = 1;
                        irg_walk_graph(copy, NULL, collect_calls2, &wenv);