*** empty log message ***
[libfirm] / testprograms / oo_program_example.c
index 28e7b5d..33f7610 100644 (file)
@@ -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);
 }