X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=testprograms%2Farray-stack_example.c;h=edeeb67fc461e259454e0582367336e7837161ab;hb=4e0e64f9b07de6beae2fe3c9d606a2f0ef52af89;hp=1e3100d86dec44de7112e9876b3bd37221dacaea;hpb=4433514e4b01cb3c566d24d671e689f02682f59f;p=libfirm diff --git a/testprograms/array-stack_example.c b/testprograms/array-stack_example.c index 1e3100d86..edeeb67fc 100644 --- a/testprograms/array-stack_example.c +++ b/testprograms/array-stack_example.c @@ -36,22 +36,22 @@ int main(void) { /* describes the general structure of a C-file */ - type_class *owner; /* the class standing for everything in this file */ - type_method *proc_main; /* Typeinformation for method main. */ + type *owner; /* the class standing for everything in this file */ + type *proc_main; /* Typeinformation for method main. */ entity *proc_main_e; /* The entity describing that method main is an entity of the fake class representing the file. */ /* describes types defined by the language */ - type_primitive *prim_t_int; + type *prim_t_int; /* describes the array and its fields. */ entity *array_ent; /* the entity representing the array as member of the stack/method */ - type_array *array_type; /* the type information for the array */ + type *array_type; /* the type information for the array */ entity *field_ent; /* the entity representing a field of the array */ /* Needed while finding the element size. */ - type_primitive *elt_type; + type *elt_type; ir_mode *elt_type_mode; int size; ir_node *arr_size; @@ -75,8 +75,8 @@ main(void) /* build typeinformation of procedure main */ owner = new_type_class (id_from_str ("ARRAY-STACK_EXAMPLE", 19)); 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); + set_method_res_type(proc_main, 0, prim_t_int); + proc_main_e = new_entity (owner, id_from_str ("main", 4), proc_main); main_irg = new_ir_graph (proc_main_e, 4); @@ -84,21 +84,22 @@ 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, (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))); /* The array is an entity of the method, placed on the mehtod's own memory, the stack frame. */ - array_ent = new_entity((type *)proc_main, id_from_str("a", 1), (type *)array_type); + array_ent = get_array_element_entity(array_type); /* As the array is accessed by Sel nodes, we need information about the entity the node select. Entities of an array are it's elements which are, in this case, integers. */ /* change entity owner types. */ - field_ent = new_entity((type*)array_type, id_from_str("array_field", 11), (type*)prim_t_int); + field_ent = new_entity(array_type, id_from_str("array_field", 11), prim_t_int); /* Now the "real" program: */ /* Select the array from the stack frame. */ - array_ptr = new_simpleSel(get_store(), main_irg->frame, array_ent); + array_ptr = new_simpleSel(get_store(), get_irg_frame(main_irg), array_ent); /* Load element 3 of the array. For this first generate the pointer to this the element by a select node. (Alternative: increase array pointer by (three * elt_size), but this complicates some @@ -121,11 +122,11 @@ main(void) x = new_Return (get_store (), 1, in); } - mature_block (main_irg->current_block); + mature_block (get_irg_current_block(main_irg)); /* complete the end_block */ - add_in_edge (main_irg->end_block, x); - mature_block (main_irg->end_block); + add_in_edge (get_irg_end_block(main_irg), x); + mature_block (get_irg_end_block(main_irg)); printf("Optimizing ...\n"); dead_node_elimination(main_irg);