+ cond = new_Cond(new_Proj(new_Cmp(expr, c1), mode_b, pn_Cmp_Eq));
+ f2 = new_Proj(cond, mode_X, pn_Cond_false);
+ t = new_Proj(cond, mode_X, pn_Cond_true);
+ 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, pn_Cond_false);
+ t = new_Proj(cond, mode_X, pn_Cond_true);
+ 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, pn_Cond_false);
+ t_l1 = new_Proj(cond, mode_X, pn_Cond_true);
+
+ 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, pn_Cond_false);
+ t_l2 = new_Proj(cond, mode_X, pn_Cond_true);
+
+ 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, pn_Cond_false);
+ t_l3 = new_Proj(cond, mode_X, pn_Cond_true);
+
+ 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");
+
+ 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 ycomp to view these graphs:\n");
+ printf("ycomp GRAPHNAME\n\n");
+ }
+ /* Error for loop2 */
+ compute_execution_frequency(get_irp_irg(0), 10, 0.001);
+ dump_interval_graph(get_irp_irg(0), "");