X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=testprograms%2Foo_program_example.c;h=33f761096aaca6fdd207f92fcedc8657893e28dc;hb=2fa17934abe60b32409bf3b797ec3aa675a1b1a0;hp=28e7b5df4ff2f9bfe099efad83b6aca946db59c2;hpb=efbeaff549fcc6015da255ed4d453a95937ff0fd;p=libfirm diff --git a/testprograms/oo_program_example.c b/testprograms/oo_program_example.c index 28e7b5df4..33f761096 100644 --- a/testprograms/oo_program_example.c +++ b/testprograms/oo_program_example.c @@ -22,7 +22,7 @@ *** return (d + a); *** end *** -*** set_a(e:int):void +*** set_a(e:int): void *** self.a = e; *** end *** @@ -50,6 +50,8 @@ main(void) ir_node *self, *par1, *a_ptr; ir_node *a_val; + int i; + init_firm (); set_opt_constant_folding(0); @@ -60,13 +62,15 @@ main(void) /* first build procedure main */ printf("creating an IR graph: OO_PROGRAM_EXAMPLE...\n"); - owner = new_type_class (id_from_str ("OO_PROGRAM_EXAMPLE", 18)); + owner = get_glob_type(); proc_main = new_type_method(id_from_str("main", 4), 0, 1); set_method_res_type(proc_main, 0, (type *)prim_t_int); proc_main_e = new_entity ((type *)owner, id_from_str ("main", 4), (type *)proc_main); main_irg = new_ir_graph (proc_main_e, 4); + /* Remark that this irg is the main routine of the program. */ + set_irp_main_irg(main_irg); /* There is only one block in main, it contains the constants and the calls. */ c2 = new_Const (mode_i, tarval_from_long (mode_i, 2)); @@ -74,7 +78,7 @@ main(void) /* allocate the defined object and generate the type information */ class_prima = new_type_class(id_from_str ("PRIMA", 5)); - obj_size = new_SymConst((type *)class_prima, size); + obj_size = new_SymConst((type_or_id *)class_prima, size); obj_o = new_Alloc(get_store(), obj_size, (type *)class_prima, heap_alloc); set_store(new_Proj(obj_o, mode_M, 0)); /* make the changed memory visible */ obj_o = new_Proj(obj_o, mode_p, 1); /* remember the pointer to the object */ @@ -137,9 +141,7 @@ main(void) mature_block (main_irg->end_block); printf("\nDone building the graph.\n"); - printf("Dumping the graph and a type graph.\n"); - dump_ir_block_graph (main_irg); - dump_type_graph(main_irg); + irg_vrfy(main_irg); /****************************************************************************/ @@ -167,9 +169,7 @@ main(void) mature_block (set_a_irg->end_block); printf("\nDone building the graph.\n"); - printf("Dumping the graph and a type graph.\n"); - dump_ir_block_graph (set_a_irg); - dump_type_graph(set_a_irg); + irg_vrfy(set_a_irg); /****************************************************************************/ @@ -200,15 +200,25 @@ main(void) add_in_edge (c_irg->end_block, x); mature_block (c_irg->end_block); + /* verify the graph */ + irg_vrfy(main_irg); + + for (i = 0; i < get_irp_n_irgs(); i++) + dead_node_elimination(get_irp_irg(i)); + printf("\nDone building the graph.\n"); - printf("Dumping the graph and a type graph.\n"); - dump_ir_block_graph (c_irg); - dump_type_graph(c_irg); + + printf("Dumping graphs of all procedures.\n"); + + for (i = 0; i < get_irp_n_irgs(); i++) { + dump_ir_block_graph (get_irp_irg(i)); + dump_type_graph(get_irp_irg(i)); + } /****************************************************************************/ printf("\nuse xvcg to view these graphs:\n"); - printf("/ben/trapp/bin/i486/xvcg GRAPHNAME\n"); + printf("/ben/goetz/bin/xvcg GRAPHNAME\n"); return (1); }