give Bad nodes a mode
[libfirm] / ir / ana / rta.c
index 94836db..ea0ae3f 100644 (file)
@@ -97,8 +97,8 @@ static bool add_class(ir_type *clazz)
 */
 static bool add_implementing_graphs(ir_entity *method)
 {
-       int i;
-       int n_over = get_entity_n_overwrittenby(method);
+       size_t i;
+       size_t n_over = get_entity_n_overwrittenby(method);
        ir_graph *graph = get_entity_irg(method);
        bool change = false;
 
@@ -263,9 +263,8 @@ static size_t stats(void)
 */
 static void init_tables(void)
 {
-       ir_type  *tp;
-       int      i, n;
-       ir_graph *irg;
+       ir_graph     *irg;
+       ir_segment_t segment;
 
        _live_classes = XMALLOC(pset_new_t);
        pset_new_init(_live_classes);
@@ -278,24 +277,18 @@ static void init_tables(void)
                pset_new_insert(_live_graphs, irg);
        }
 
-       /* Find static allocated classes */
-       tp = get_glob_type();
-       n  = get_class_n_members(tp);
-       for (i = 0; i < n; ++i) {
-               ir_type *member_type = get_entity_type(get_class_member(tp, i));
-               if (is_Class_type(member_type))
-                       pset_new_insert(_live_classes, member_type);
-       }
+       /* Find static allocated classes in all segments */
+       for (segment = IR_SEGMENT_FIRST; segment <= IR_SEGMENT_LAST; ++segment) {
+               ir_type *tp = get_segment_type(segment);
+               size_t  n   = get_compound_n_members(tp);
+               size_t  i;
 
-       tp = get_tls_type();
-       n  = get_struct_n_members(tp);
-       for (i = 0; i < n; ++i) {
-               ir_type *member_type = get_entity_type(get_struct_member(tp, i));
-               if (is_Class_type(member_type))
-                       pset_new_insert(_live_classes, member_type);
+               for (i = 0; i < n; ++i) {
+                       ir_type *member_type = get_entity_type(get_compound_member(tp, i));
+                       if (is_Class_type(member_type))
+                               pset_new_insert(_live_classes, member_type);
+               }
        }
-
-       /** @FIXME: add constructors/destructors */
 }
 
 /*
@@ -309,9 +302,9 @@ void rta_init(void)
 
 # ifdef DEBUG_libfirm
        {
-               int i;
-               for (i = get_irp_n_irgs() - 1; i >= 0; --i) {
-                       irg_verify(get_irp_irg(i), 0);
+               size_t i;
+               for (i = get_irp_n_irgs(); i > 0;) {
+                       irg_verify(get_irp_irg(--i), 0);
                }
                tr_verify();
        }
@@ -327,10 +320,10 @@ void rta_init(void)
 
 # ifdef DEBUG_libfirm
        {
-               int i;
+               size_t i;
 
-               for (i = get_irp_n_irgs() - 1; i >= 0; --i) {
-                       irg_verify(get_irp_irg(i), 0);
+               for (i = get_irp_n_irgs(); i > 0;) {
+                       irg_verify(get_irp_irg(--i), 0);
                }
                tr_verify();
        }
@@ -365,15 +358,15 @@ static void make_entity_to_description(type_or_ent tore, void *env)
 */
 void rta_delete_dead_graphs(void)
 {
-       int      i, n_dead_irgs, n_graphs = get_irp_n_irgs();
+       size_t   i, n_dead_irgs, n_graphs = get_irp_n_irgs();
        ir_graph *irg, *next_irg, *dead_irgs;
 
        irp_reserve_resources(irp, IR_RESOURCE_IRG_LINK);
 
        n_dead_irgs = 0;
        dead_irgs = NULL;
-       for (i = n_graphs - 1; i >= 0; --i) {
-               irg = get_irp_irg(i);
+       for (i = n_graphs; i > 0;) {
+               irg = get_irp_irg(--i);
 
                if (! rta_is_alive_graph(irg)) {
                        set_irg_link(irg, dead_irgs);
@@ -389,7 +382,7 @@ void rta_delete_dead_graphs(void)
                remove_irp_irg(irg);
        }
 
-       DB((dbg, LEVEL_1, "RTA: dead methods = %i\n", n_dead_irgs));
+       DB((dbg, LEVEL_1, "RTA: dead methods = %zu\n", n_dead_irgs));
 
        irp_free_resources(irp, IR_RESOURCE_IRG_LINK);
 }
@@ -398,9 +391,9 @@ void rta_delete_dead_graphs(void)
 void rta_cleanup(void)
 {
 # ifdef DEBUG_libfirm
-       int i;
-       for (i = get_irp_n_irgs() - 1; i >= 0; --i) {
-               irg_verify(get_irp_irg(i), 0);
+       size_t i;
+       for (i = get_irp_n_irgs(); i > 0;) {
+               irg_verify(get_irp_irg(--i), 0);
        }
        tr_verify();
 # endif /* defined DEBUG_libfirm */
@@ -433,7 +426,7 @@ int rta_is_alive_graph(ir_graph *graph)
 /* dump our opinion */
 void rta_report(void)
 {
-       int i, n;
+       size_t i, n;
 
        n = get_irp_n_types();
        for (i = 0; i < n; ++i) {