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;
* @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);
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;
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);
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);
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);
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);
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");