+ /* to make several conditionals */
+ expr = new_Const (mode_Is, new_tarval_from_long (0, mode_Is));
+ c1 = new_Const (mode_Is, new_tarval_from_long (1, mode_Is));
+ c2 = new_Const (mode_Is, new_tarval_from_long (2, mode_Is));
+ c3 = new_Const (mode_Is, new_tarval_from_long (3, mode_Is));
+ c4 = new_Const (mode_Is, new_tarval_from_long (4, mode_Is));
+ c5 = new_Const (mode_Is, new_tarval_from_long (5, mode_Is));
+
+ cond = new_Cond(new_Proj(new_Cmp(expr, c1), mode_b, pn_Cmp_Eq));
+ f2 = new_Proj(cond, mode_X, 0);
+ t = new_Proj(cond, mode_X, 1);
+ mature_immBlock(get_irg_current_block(irg));
+
+ new_immBlock();
+ add_immBlock_pred(get_irg_current_block(irg), t);
+ cond = new_Cond(new_Proj(new_Cmp(expr, c5), mode_b, pn_Cmp_Eq));
+ f = new_Proj(cond, mode_X, 0);
+ t = new_Proj(cond, mode_X, 1);
+ mature_immBlock(get_irg_current_block(irg));
+
+ loopBlock1 = new_immBlock();
+ add_immBlock_pred(loopBlock1, t);
+ cond = new_Cond(new_Proj(new_Cmp(expr, c2), mode_b, pn_Cmp_Eq));
+ f_l1 = new_Proj(cond, mode_X, 0);
+ t_l1 = new_Proj(cond, mode_X, 1);
+
+ loopBlock2 = new_immBlock();
+ add_immBlock_pred(loopBlock2, f);
+ cond = new_Cond(new_Proj(new_Cmp(expr, c3), mode_b, pn_Cmp_Eq));
+ f_l2 = new_Proj(cond, mode_X, 0);
+ t_l2 = new_Proj(cond, mode_X, 1);
+
+ loopBlock3 = new_immBlock();
+ add_immBlock_pred(loopBlock3, f2);
+ cond = new_Cond(new_Proj(new_Cmp(expr, c4), mode_b, pn_Cmp_Eq));
+ f_l3 = new_Proj(cond, mode_X, 0);
+ t_l3 = new_Proj(cond, mode_X, 1);
+
+ add_immBlock_pred(loopBlock1, t_l2);
+ add_immBlock_pred(loopBlock2, t_l1);
+ add_immBlock_pred(loopBlock3, f_l2);
+ add_immBlock_pred(loopBlock2, t_l3);
+ mature_immBlock(loopBlock1);
+ mature_immBlock(loopBlock2);
+ mature_immBlock(loopBlock3);
+
+ new_immBlock();
+ add_immBlock_pred(get_irg_current_block(irg), f_l1);
+ add_immBlock_pred(get_irg_current_block(irg), f_l3);
+ x = new_Return (get_store(), 0, NULL);
+ mature_immBlock (get_irg_current_block(irg));
+
+ add_immBlock_pred (get_irg_end_block(irg), x);
+ mature_immBlock (get_irg_end_block(irg));
+
+ irg_finalize_cons (irg);
+
+ /* --- more ... ------------------------------------------------------ */
+
+ printf("Optimizing ...\n");
+ //dead_node_elimination(irg);
+
+ for (i = 0; i < get_irp_n_irgs(); ++i) {
+ current_ir_graph = get_irp_irg(i);
+ /* verify the graph */
+ irg_vrfy(current_ir_graph);
+ construct_cf_backedges(current_ir_graph);
+ dump_loop_tree(current_ir_graph, "");
+
+ printf("Dumping the graph and a control flow graph.\n");
+ dump_ir_block_graph(current_ir_graph, "");
+ dump_cfg(current_ir_graph, "");
+ printf("Use xvcg to view these graphs:\n");
+ printf("/ben/goetz/bin/xvcg GRAPHNAME\n\n");
+
+ }
+ /* Error for loop2 */
+ compute_execution_frequency(get_irp_irg(0), 10, 0.001);
+ dump_interval_graph(get_irp_irg(0), "");