*** empty log message ***
[libfirm] / testprograms / array-heap_example.c
index fcda4f5..b445639 100644 (file)
@@ -87,14 +87,14 @@ main(void)
 # define N_DIMS 1
 # define L_BOUND 0
 # define U_BOUND 9
-  array_type = new_type_array(id_from_str("a", 1), N_DIMS);
-  set_array_bounds(array_type, 1, L_BOUND, U_BOUND);
-  set_array_element_type(array_type, prim_t_int);
+  array_type = new_type_array(id_from_str("a", 1), N_DIMS, prim_t_int);
+  set_array_bounds(array_type, 1,
+                  new_Const(mode_I, tarval_from_long (mode_I, L_BOUND)),
+                  new_Const(mode_I, tarval_from_long (mode_I, U_BOUND)));
   /* As the array is accessed by Sel nodes, we need information about
      the entity the node selects.  Entities of an array are it's elements
      which are, in this case, integers. */
-  array_ent = new_entity((type*)array_type, id_from_str("array_field", 11),
-                        (type*)prim_t_int);
+  array_ent = get_array_element_entity(array_type);
 
   /* Allocate the array. All program known variables that
      are not modeled by dataflow edges need an explicit allocate node.
@@ -109,7 +109,7 @@ main(void)
   /*   allocate and generate the Proj nodes. */
   array     = new_Alloc(get_store(), arr_size, (type*)array_type, stack_alloc);
   set_store(new_Proj(array, mode_M, 0));   /* make the changed memory visible */
-  array_ptr = new_Proj(array, mode_p, 1);  /* remember the pointer to the array */
+  array_ptr = new_Proj(array, mode_p, 2);  /* remember the pointer to the array */
 
   /* Now the "real" program: */
   /* Load element 3 of the array. For this first generate the pointer to this
@@ -125,7 +125,7 @@ main(void)
   }
   val = new_Load(get_store(), elt);
   set_store(new_Proj(val, mode_M, 0));
-  val = new_Proj(val, mode_i, 1);
+  val = new_Proj(val, mode_i, 2);
 
   /* return the result of procedure main */
   {
@@ -140,6 +140,8 @@ main(void)
   add_in_edge (get_irg_end_block(main_irg), x);
   mature_block (get_irg_end_block(main_irg));
 
+  finalize_cons (main_irg);
+
   printf("Optimizing ...\n");
   dead_node_elimination(main_irg);