- cleaned up irp functions a bit
[libfirm] / ir / tr / typewalk.c
index fde9e46..afbcb38 100644 (file)
  */
 #include "config.h"
 
-#ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-
+#include <stdlib.h>
 #include <stdio.h>
 
 #include "entity_t.h"
@@ -279,6 +276,29 @@ void type_walk(type_walk_func *pre, type_walk_func *post, void *env) {
        do_type_walk(cont, pre, post, 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;
+
+       type_walk(pre, post, env);
+
+       for (i = 0; i < n_irgs; ++i) {
+               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);
+       }
+}
+
 void type_walk_irg(ir_graph *irg,
                    type_walk_func *pre,
                    type_walk_func *post,