GVN fixes
[libfirm] / ir / opt / escape_ana.c
index be3ee27..cba1a58 100644 (file)
@@ -192,7 +192,7 @@ static int can_escape(ir_node *n)
                                        size_t j;
                                        ent = get_Call_callee(succ, --k);
 
-                                       if (ent == unknown_entity) {
+                                       if (is_unknown_entity(ent)) {
                                                /* we don't know what will be called, a possible escape */
                                                return 1;
                                        }
@@ -414,7 +414,7 @@ static void transform_allocs(ir_graph *irg, walk_env_t *env)
                        }
                }
 
-               if (tp && tp != firm_unknown_type) {
+               if (tp && !is_unknown_type(tp)) {
                        /* we could determine the type, so we could place it on the frame */
                        dbg  = get_irn_dbg_info(alloc);
                        blk  = get_nodes_block(alloc);
@@ -450,8 +450,7 @@ static void transform_allocs(ir_graph *irg, walk_env_t *env)
 
        /* if allocs were removed somehow */
        if (env->nr_removed && env->nr_deads) {
-               /* exception control flow might have been changed */
-               clear_irg_state(irg, IR_GRAPH_STATE_CONSISTENT_DOMINANCE);
+               confirm_irg_properties(irg, IR_GRAPH_PROPERTIES_NONE);
        }
 }
 
@@ -484,6 +483,8 @@ static void transform_alloc_calls(ir_graph *irg, walk_env_t *env)
        for (call = env->found_allocs; call; call = next) {
                next = (ir_node*)get_irn_link(call);
        }
+
+       confirm_irg_properties(irg, IR_GRAPH_PROPERTIES_NONE);
 }
 
 
@@ -498,7 +499,7 @@ void escape_enalysis_irg(ir_graph *irg, check_alloc_entity_func callback)
                return;
        }
 
-       if (is_irg_state(irg, IR_GRAPH_STATE_CONSISTENT_OUTS))
+       if (irg_has_properties(irg, IR_GRAPH_PROPERTY_CONSISTENT_OUTS))
                compute_irg_outs(irg);
 
        env.found_allocs = NULL;
@@ -551,7 +552,7 @@ void escape_analysis(int run_scalar_replace, check_alloc_entity_func callback)
        for (i = 0, n = get_irp_n_irgs(); i < n; ++i) {
                ir_graph *irg = get_irp_irg(i);
 
-               assure_irg_outs(irg);
+               assure_irg_properties(irg, IR_GRAPH_PROPERTY_CONSISTENT_OUTS);
 
                if (callback) {
                        /* search for Calls */