9c85636091acdcb2b73bf0e3fb2afd7bab44ab12
[libfirm] / ir / be / besched.c
1
2 #include "irprintf.h"
3 #include "irgwalk.h"
4 #include "irnode.h"
5
6 #include "besched.h"
7 #include "belistsched.h"
8
9 size_t sched_irn_data_offset = 0;
10
11 static void block_sched_dumper(ir_node *block, void *env)
12 {
13         FILE *f = env;
14         const ir_node *curr;
15
16         ir_fprintf(f, "%n:\n", block);
17         sched_foreach(block, curr) {
18                 ir_fprintf(f, "\t%n\n", curr);
19         }
20 }
21
22 void be_sched_dump(FILE *f, const ir_graph *irg)
23 {
24         irg_block_walk_graph((ir_graph *) irg, block_sched_dumper, NULL, f);
25 }
26
27 void be_sched_init(void)
28 {
29         sched_irn_data_offset = register_additional_node_data(sizeof(sched_info_t));
30 }
31
32 void be_sched_test(void)
33 {
34         int i, n;
35         struct obstack obst;
36
37         obstack_init(&obst);
38
39         for(i = 0, n = get_irp_n_irgs(); i < n; ++i) {
40                 ir_graph *irg = get_irp_irg(i);
41
42                 list_sched(irg, trivial_selector, NULL);
43                 be_sched_dump(stdout, irg);
44         }
45
46         obstack_free(&obst, NULL);
47 }