X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=testprograms%2Floop_unroll_example.c;h=d90454b9c93ce2737e15ed1437625399734923d8;hb=f9b8d47d4043efa9d709fa221e4145d8019e4721;hp=a66dea6ef953eff519f813081e3fbbc42b6c9892;hpb=a724e745a061472ae1d83dc8d548675ca4079787;p=libfirm diff --git a/testprograms/loop_unroll_example.c b/testprograms/loop_unroll_example.c index a66dea6ef..d90454b9c 100644 --- a/testprograms/loop_unroll_example.c +++ b/testprograms/loop_unroll_example.c @@ -49,7 +49,7 @@ static int i_pos = 0; static int arr_pos = 1; -static type *typ, *typ2; +static ir_type *typ, *typ2; static ir_node *r1, *f, *r, *c2; @@ -72,29 +72,29 @@ typedef enum { * @param fct_name the name of the function * @param loop_dir the loop direction */ -static void function_begin(type *owner, type *mtp, char *fct_name, loop_dir_t loop_dir) { +static void function_begin(ir_type *owner, ir_type *mtp, char *fct_name, loop_dir_t loop_dir) { symconst_symbol sym; ir_node *x, *t, *cmp; int start_value, end_value; - pnc_number cmp_dir; + pn_Cmp cmp_dir; if (loop_dir == loop_forward) { start_value = 0; end_value = 11; - cmp_dir = Ge; + cmp_dir = pn_Cmp_Ge; } else { start_value = 10; end_value = 0; - cmp_dir = Lt; + cmp_dir = pn_Cmp_Lt; } /* The entity for the procedure */ entity *ent = new_entity (owner, new_id_from_str(fct_name), mtp); /* make type infromation for the array */ - type *array_type = new_type_array(new_id_from_str("array"), N_DIMS, typ); + ir_type *array_type = new_type_array(new_id_from_str("array"), N_DIMS, typ); /* set the bounds for the array */ set_array_bounds_int(array_type, 0, L_BOUND, U_BOUND); @@ -175,9 +175,9 @@ int main(void) { ir_graph *irg; - type *owner; + ir_type *owner; entity *ent, *array_ent, *array_ent2; - type *proc_tp, *array_type, *array_type2; /* type information for the method main */ + ir_type *proc_tp, *array_type, *array_type2; /* type information for the method main */ ir_node *x,*x1 , *r, *t, *f, *f1, *t1, *cmp, *r1, *r2; int i_pos; @@ -187,7 +187,7 @@ main(void) arch_dep_set_opts(arch_dep_none); - do_node_verification(NODE_VERIFICATION_REPORT); + do_node_verification(FIRM_VERIFICATION_REPORT); typ = new_type_primitive(new_id_from_chars(PRIM_NAME, strlen(PRIM_NAME)), mode_Is); @@ -247,7 +247,7 @@ main(void) r1 = new_immBlock(); add_immBlock_pred(get_irg_current_block(irg), x); cmp = new_Cmp(new_Const_int(10), get_value(i_pos, mode_Is)); - x = new_Cond(new_Proj(cmp, mode_b, Gt)); + x = new_Cond(new_Proj(cmp, mode_b, pn_Cmp_Gt)); f = new_Proj(x, mode_X, 0); t = new_Proj(x, mode_X, 1); @@ -286,7 +286,7 @@ main(void) ir_node *b1 = new_Const_int(45); add_immBlock_pred(get_irg_current_block(irg), f); cmp = new_Cmp(new_Const_int(0), b1); - x = new_Cond (new_Proj(cmp, mode_b, Lt)); + x = new_Cond (new_Proj(cmp, mode_b, pn_Cmp_Lt)); f1 = new_Proj (x, mode_X, 0); t1 = new_Proj (x, mode_X, 1); @@ -436,13 +436,34 @@ main(void) printf("Done building the graph. Dumping and optimizing it.\n"); dump_consts_local(1); turn_off_edge_labels(); + + +#if 1 /* Use this version for testing. Loop unrolling creates random node numbers, + therefore we can not compare test graphs. */ for (i = 0; i < n_irgs; ++i) { current_ir_graph = get_irp_irg(i); irg_vrfy(current_ir_graph); - finalize_cons (current_ir_graph); + irg_finalize_cons (current_ir_graph); + + construct_backedges(current_ir_graph); + + set_opt_strength_red_verbose(2); + set_firm_verbosity(2); + set_optimize(0); + set_opt_loop_unrolling(1); + optimize_loop_unrolling(current_ir_graph); + + irg_vrfy(current_ir_graph); + } +#else + for (i = 0; i < n_irgs; ++i) { + current_ir_graph = get_irp_irg(i); + irg_vrfy(current_ir_graph); + irg_finalize_cons (current_ir_graph); /* output the vcg file */ dump_ir_block_graph (current_ir_graph, 0); + construct_backedges(current_ir_graph); dump_ir_graph (current_ir_graph, 0); dump_all_types(0); @@ -463,6 +484,7 @@ main(void) dump_ir_block_graph (current_ir_graph, "-loop-unrolling"); // dump_ir_graph (current_ir_graph, "-pure-loop-unrolling"); } +#endif //printf("use xvcg to view this graph:\n"); //printf("/ben/goetz/bin/xvcg GRAPHNAME\n\n");