beinfo: assert() that be_get_info() is not called on Projs.
[libfirm] / ir / opt / ircgopt.c
index d4a20d2..ce9e411 100644 (file)
@@ -22,7 +22,6 @@
  * @brief    Removal of unreachable methods.
  * @author   Hubert Schmid
  * @date     09.06.2002
- * @version  $Id$
  */
 
 /*
@@ -45,7 +44,7 @@
 #include "irtools.h"
 #include "irpass.h"
 
-DEBUG_ONLY(static firm_dbg_module_t *dbg);
+DEBUG_ONLY(static firm_dbg_module_t *dbg;)
 
 /**
  * Walker: adds Call operations to a head's link list.
@@ -64,7 +63,6 @@ static void collect_call(ir_node *node, void *env)
 void gc_irgs(size_t n_keep, ir_entity ** keep_arr)
 {
        void * MARK = &MARK; /* @@@ gefaehrlich!!! Aber wir markieren hoechstens zu viele ... */
-       int i;
 
        FIRM_DBG_REGISTER(dbg, "firm.opt.cgopt");
 
@@ -81,13 +79,13 @@ void gc_irgs(size_t n_keep, ir_entity ** keep_arr)
                size_t    idx;
 
                for (idx = 0; idx < n_keep; ++idx) {
-                       marked[i] = keep_arr[idx];
+                       marked[idx] = keep_arr[idx];
                        set_entity_link(marked[idx], MARK);
                        DB((dbg, LEVEL_1, "  method %+F kept alive.\n", marked[idx]));
                }
 
-               for (i = 0; i < ARR_LEN(marked); ++i) {
-                       ir_graph *irg = get_entity_irg(marked[i]);
+               for (idx = 0; idx < ARR_LEN(marked); ++idx) {
+                       ir_graph *irg = get_entity_irg(marked[idx]);
                        ir_node *node;
 
                        if (irg == NULL)
@@ -102,11 +100,11 @@ void gc_irgs(size_t n_keep, ir_entity ** keep_arr)
                        /* iterate calls */
                        for (node = (ir_node*)get_irn_link(node); node != NULL;
                             node = (ir_node*)get_irn_link(node)) {
-                               int i;
+                               size_t i;
                                assert(is_Call(node));
 
-                               for (i = get_Call_n_callees(node) - 1; i >= 0; --i) {
-                                       ir_entity *ent = get_Call_callee(node, i);
+                               for (i = get_Call_n_callees(node); i > 0;) {
+                                       ir_entity *ent = get_Call_callee(node, --i);
 
                                        if (get_entity_irg(ent) && get_entity_link(ent) != MARK) {
                                                set_entity_link(ent, MARK);
@@ -123,7 +121,7 @@ void gc_irgs(size_t n_keep, ir_entity ** keep_arr)
        }
 
        /* clean */
-       for (i = get_irp_n_irgs() - 1; i >= 0; --i) {
+       for (size_t i = get_irp_n_irgs(); i-- != 0;) {
                ir_graph  *irg = get_irp_irg(i);
                ir_entity *ent = get_irg_entity(irg);
 
@@ -131,9 +129,7 @@ void gc_irgs(size_t n_keep, ir_entity ** keep_arr)
                        continue;
 
                DB((dbg, LEVEL_1, "  freeing method %+F\n", ent));
-               remove_irp_irg(irg);
-
-               free_entity(ent);
+               free_ir_graph(irg);
        }
 }