remove the unused 'ident' type, remove tpo_max add tpo_last
[libfirm] / ir / tr / typewalk.c
index 1b64e9b..f20857d 100644 (file)
@@ -22,7 +22,7 @@
  * @brief   Functionality to modify the type graph.
  * @author  Goetz Lindenmaier
  * @version $Id$
- * @summary
+ * @brief
  *
  * Traverse the type information.  The walker walks the whole ir graph
  * to find the distinct type trees in the type graph forest.
@@ -144,7 +144,6 @@ static void do_type_walk(type_or_ent tore,
        case k_type:
                mark_type_visited(tp);
                switch (get_type_tpop_code(tp)) {
-
                case tpo_class:
                        n_types = get_class_n_supertypes(tp);
                        for (i = 0; i < n_types; ++i) {
@@ -208,13 +207,13 @@ static void do_type_walk(type_or_ent tore,
                        do_type_walk(cont, pre, post, env);
                        break;
 
+               case tpo_code:
                case tpo_primitive:
-               case tpo_id:
                case tpo_none:
                case tpo_unknown:
                        /* a leave. */
                        break;
-               default:
+               case tpo_uninitialized:
                        assert(0 && "Faulty type");
                        break;
                }
@@ -276,7 +275,7 @@ void type_walk(type_walk_func *pre, type_walk_func *post, void *env) {
        do_type_walk(cont, pre, post, env);
 }
 
-void type_walk_plus_frames(type_walk_func *pre, type_walk_func *post, void *env) {
+void type_walk_prog(type_walk_func *pre, type_walk_func *post, void *env) {
        int i, n_irgs = get_irp_n_irgs();
        type_or_ent cont;
 
@@ -286,6 +285,16 @@ void type_walk_plus_frames(type_walk_func *pre, type_walk_func *post, void *env)
                ir_graph *irg = get_irp_irg(i);
                cont.typ = get_irg_frame_type(irg);
                do_type_walk(cont, pre, post, env);
+
+               cont.typ = get_method_value_param_type(get_entity_type(get_irg_entity(irg)));
+               if(cont.typ)
+                       do_type_walk(cont, pre, post, env);
+       }
+
+       for (i = 0; i < IR_SEGMENT_COUNT; ++i) {
+               cont.typ = get_segment_type((ir_segment_t) i);
+               if(cont.typ)
+                       do_type_walk(cont, pre, post, env);
        }
 }
 
@@ -389,7 +398,6 @@ static void type_walk_s2s_2(type_or_ent tore,
                        case tpo_enumeration:
                        case tpo_pointer:
                        case tpo_primitive:
-                       case tpo_id:
                                /* dont care */
                                break;
                        default:
@@ -483,7 +491,6 @@ type_walk_super_2(type_or_ent tore,
                        case tpo_enumeration:
                        case tpo_pointer:
                        case tpo_primitive:
-                       case tpo_id:
                                /* don't care */
                                break;
                        default:
@@ -604,7 +611,6 @@ void walk_types_entities(ir_type *tp,
        case tpo_enumeration:
        case tpo_pointer:
        case tpo_primitive:
-       case tpo_id:
        default:
                break;
        }