Lines Matching refs:fixup_graph
149 print_basic_block (FILE *file, fixup_graph_type *fixup_graph, int n) in print_basic_block() argument
159 else if (n == fixup_graph->new_exit_index) in print_basic_block()
161 else if (n == fixup_graph->new_entry_index) in print_basic_block()
181 print_edge (FILE *file, fixup_graph_type *fixup_graph, int s, int d) in print_edge() argument
183 print_basic_block (file, fixup_graph, s); in print_edge()
185 print_basic_block (file, fixup_graph, d); in print_edge()
192 dump_fixup_edge (FILE *file, fixup_graph_type *fixup_graph, fixup_edge_p fedge) in dump_fixup_edge() argument
200 print_edge (file, fixup_graph, fedge->src, fedge->dest); in dump_fixup_edge()
271 dump_fixup_graph (FILE *file, fixup_graph_type *fixup_graph, const char *msg) in dump_fixup_graph() argument
279 gcc_assert (fixup_graph); in dump_fixup_graph()
280 fvertex_list = fixup_graph->vertex_list; in dump_fixup_graph()
281 fnum_vertices = fixup_graph->num_vertices; in dump_fixup_graph()
282 fnum_edges = fixup_graph->num_edges; in dump_fixup_graph()
288 fnum_vertices, fnum_edges, fixup_graph->new_exit_index); in dump_fixup_graph()
305 dump_fixup_edge (file, fixup_graph, pfedge); in dump_fixup_graph()
364 add_edge (fixup_graph_type *fixup_graph, int src, int dest, gcov_type cost) in add_edge() argument
366 fixup_vertex_p curr_vertex = fixup_graph->vertex_list + src; in add_edge()
367 fixup_edge_p curr_edge = fixup_graph->edge_list + fixup_graph->num_edges; in add_edge()
371 fixup_graph->num_edges++; in add_edge()
373 dump_fixup_edge (dump_file, fixup_graph, curr_edge); in add_edge()
383 add_fixup_edge (fixup_graph_type *fixup_graph, int src, int dest, in add_fixup_edge() argument
387 fixup_edge_p curr_edge = add_edge (fixup_graph, src, dest, cost); in add_fixup_edge()
398 add_rfixup_edge (fixup_graph_type *fixup_graph, int src, int dest, in add_rfixup_edge() argument
401 fixup_edge_p curr_edge = add_edge (fixup_graph, src, dest, cost); in add_rfixup_edge()
413 find_fixup_edge (fixup_graph_type *fixup_graph, int src, int dest) in find_fixup_edge() argument
419 gcc_assert (src < fixup_graph->num_vertices); in find_fixup_edge()
421 pfvertex = fixup_graph->vertex_list + src; in find_fixup_edge()
435 delete_fixup_graph (fixup_graph_type *fixup_graph) in delete_fixup_graph() argument
438 int fnum_vertices = fixup_graph->num_vertices; in delete_fixup_graph()
439 fixup_vertex_p pfvertex = fixup_graph->vertex_list; in delete_fixup_graph()
444 free (fixup_graph->vertex_list); in delete_fixup_graph()
445 free (fixup_graph->edge_list); in delete_fixup_graph()
452 create_fixup_graph (fixup_graph_type *fixup_graph) in create_fixup_graph() argument
494 fixup_graph->num_vertices = n_basic_blocks_for_fn (cfun); in create_fixup_graph()
497 fixup_graph->vertex_list = in create_fixup_graph()
501 fixup_graph->edge_list = in create_fixup_graph()
530 add_fixup_edge (fixup_graph, i, i + 1, VERTEX_SPLIT_EDGE, bb_gcov_count (bb), in create_fixup_graph()
532 fixup_graph->num_vertices++; in create_fixup_graph()
542 add_fixup_edge (fixup_graph, i + 1, j, REDIRECT_EDGE, edge_gcov_count (e), in create_fixup_graph()
548 gcc_assert (fixup_graph->num_vertices == fnum_vertices_after_transform); in create_fixup_graph()
550 gcc_assert (fixup_graph->num_edges <= fnum_edges_after_transform); in create_fixup_graph()
552 fnum_edges_after_transform = fixup_graph->num_edges; in create_fixup_graph()
557 pfedge = fixup_graph->edge_list + i; in create_fixup_graph()
571 pfedge = fixup_graph->edge_list + i; in create_fixup_graph()
574 r_pfedge = find_fixup_edge (fixup_graph, pfedge->dest, pfedge->src); in create_fixup_graph()
580 add_fixup_edge (fixup_graph, pfedge->dest, pfedge->src, in create_fixup_graph()
590 new_entry_index = fixup_graph->new_entry_index = fixup_graph->num_vertices; in create_fixup_graph()
591 fixup_graph->num_vertices++; in create_fixup_graph()
593 add_fixup_edge (fixup_graph, new_entry_index, ENTRY_BLOCK, SOURCE_CONNECT_EDGE, in create_fixup_graph()
597 new_exit_index = fixup_graph->new_exit_index = fixup_graph->num_vertices; in create_fixup_graph()
598 fixup_graph->num_vertices++; in create_fixup_graph()
599 add_fixup_edge (fixup_graph, 2 * EXIT_BLOCK + 1, new_exit_index, in create_fixup_graph()
612 add_fixup_edge (fixup_graph, i, new_exit_index, BALANCE_EDGE, 0, 0, in create_fixup_graph()
618 add_fixup_edge (fixup_graph, new_entry_index, i, BALANCE_EDGE, 0, 0, in create_fixup_graph()
636 pfedge = find_fixup_edge (fixup_graph, new_entry_index, ENTRY_BLOCK); in create_fixup_graph()
641 pfedge = find_fixup_edge (fixup_graph, 2 * EXIT_BLOCK + 1, new_exit_index); in create_fixup_graph()
651 fnum_edges = fixup_graph->num_edges; in create_fixup_graph()
652 fedge_list = fixup_graph->edge_list; in create_fixup_graph()
657 r_pfedge = find_fixup_edge (fixup_graph, pfedge->dest, pfedge->src); in create_fixup_graph()
661 new_index = fixup_graph->num_vertices; in create_fixup_graph()
662 fixup_graph->num_vertices++; in create_fixup_graph()
667 dump_fixup_edge (dump_file, fixup_graph, pfedge); in create_fixup_graph()
668 dump_fixup_edge (dump_file, fixup_graph, r_pfedge); in create_fixup_graph()
678 dump_fixup_edge (dump_file, fixup_graph, pfedge); in create_fixup_graph()
682 add_fixup_edge (fixup_graph, new_index, pfedge->src, in create_fixup_graph()
685 gcc_assert (fixup_graph->num_vertices <= fmax_num_vertices); in create_fixup_graph()
694 dump_fixup_edge (dump_file, fixup_graph, r_pfedge); in create_fixup_graph()
699 dump_fixup_graph (dump_file, fixup_graph, "After create_fixup_graph()"); in create_fixup_graph()
784 cancel_negative_cycle (fixup_graph_type *fixup_graph, in cancel_negative_cycle() argument
796 gcc_assert (fixup_graph); in cancel_negative_cycle()
797 fnum_vertices = fixup_graph->num_vertices; in cancel_negative_cycle()
798 fnum_edges = fixup_graph->num_edges; in cancel_negative_cycle()
799 fedge_list = fixup_graph->edge_list; in cancel_negative_cycle()
800 new_entry_index = fixup_graph->new_entry_index; in cancel_negative_cycle()
889 pfedge = find_fixup_edge (fixup_graph, cycle[k + 1], cycle[k]); in cancel_negative_cycle()
909 pfedge = find_fixup_edge (fixup_graph, cycle[k + 1], cycle[k]); in cancel_negative_cycle()
910 r_pfedge = find_fixup_edge (fixup_graph, cycle[k], cycle[k + 1]); in cancel_negative_cycle()
927 compute_residual_flow (fixup_graph_type *fixup_graph) in compute_residual_flow() argument
933 gcc_assert (fixup_graph); in compute_residual_flow()
938 fnum_edges = fixup_graph->num_edges; in compute_residual_flow()
939 fedge_list = fixup_graph->edge_list; in compute_residual_flow()
946 add_rfixup_edge (fixup_graph, pfedge->dest, pfedge->src, pfedge->flow, in compute_residual_flow()
959 find_augmenting_path (fixup_graph_type *fixup_graph, in find_augmenting_path() argument
977 gcc_assert (fixup_graph); in find_augmenting_path()
979 fvertex_list = fixup_graph->vertex_list; in find_augmenting_path()
981 for (u = 0; u < fixup_graph->num_vertices; u++) in find_augmenting_path()
1027 find_max_flow (fixup_graph_type *fixup_graph, int source, int sink) in find_max_flow() argument
1036 gcc_assert (fixup_graph); in find_max_flow()
1038 fnum_edges = fixup_graph->num_edges; in find_max_flow()
1039 fedge_list = fixup_graph->edge_list; in find_max_flow()
1048 compute_residual_flow (fixup_graph); in find_max_flow()
1050 init_augmenting_path (&augmenting_path, fixup_graph->num_vertices); in find_max_flow()
1053 while (find_augmenting_path (fixup_graph, &augmenting_path, source, sink)) in find_max_flow()
1059 pfedge = find_fixup_edge (fixup_graph, bb_pred[u], u); in find_max_flow()
1067 pfedge = find_fixup_edge (fixup_graph, bb_pred[u], u); in find_max_flow()
1068 r_pfedge = find_fixup_edge (fixup_graph, u, bb_pred[u]); in find_max_flow()
1091 print_basic_block (dump_file, fixup_graph, u); in find_max_flow()
1105 dump_fixup_graph (dump_file, fixup_graph, "After find_max_flow()"); in find_max_flow()
1114 adjust_cfg_counts (fixup_graph_type *fixup_graph) in adjust_cfg_counts() argument
1122 gcc_assert (fixup_graph); in adjust_cfg_counts()
1137 pfedge = find_fixup_edge (fixup_graph, i, i + 1); in adjust_cfg_counts()
1145 print_edge (dump_file, fixup_graph, i, i + 1); in adjust_cfg_counts()
1151 find_fixup_edge (fixup_graph, i + 1, pfedge->norm_vertex_index); in adjust_cfg_counts()
1160 print_edge (dump_file, fixup_graph, i + 1, in adjust_cfg_counts()
1180 pfedge = find_fixup_edge (fixup_graph, i + 1, j); in adjust_cfg_counts()
1192 print_edge (dump_file, fixup_graph, i + 1, j); in adjust_cfg_counts()
1198 find_fixup_edge (fixup_graph, j, pfedge->norm_vertex_index); in adjust_cfg_counts()
1207 print_edge (dump_file, fixup_graph, j, in adjust_cfg_counts()
1217 pfedge = find_fixup_edge (fixup_graph, j, i + 1); in adjust_cfg_counts()
1219 find_fixup_edge (fixup_graph, i + 1, pfedge->norm_vertex_index); in adjust_cfg_counts()
1227 print_edge (dump_file, fixup_graph, i + 1, in adjust_cfg_counts()
1302 find_minimum_cost_flow (fixup_graph_type *fixup_graph) in find_minimum_cost_flow() argument
1316 gcc_assert (fixup_graph); in find_minimum_cost_flow()
1317 fnum_vertices = fixup_graph->num_vertices; in find_minimum_cost_flow()
1318 new_exit_index = fixup_graph->new_exit_index; in find_minimum_cost_flow()
1319 new_entry_index = fixup_graph->new_entry_index; in find_minimum_cost_flow()
1321 find_max_flow (fixup_graph, new_entry_index, new_exit_index); in find_minimum_cost_flow()
1332 while (cancel_negative_cycle (fixup_graph, pred, d, cycle)) in find_minimum_cost_flow()
1335 if (iteration > MAX_ITER (fixup_graph->num_vertices, in find_minimum_cost_flow()
1336 fixup_graph->num_edges)) in find_minimum_cost_flow()
1341 dump_fixup_graph (dump_file, fixup_graph, in find_minimum_cost_flow()
1378 fixup_graph_type fixup_graph; in mcf_smooth_cfg() local
1379 memset (&fixup_graph, 0, sizeof (fixup_graph)); in mcf_smooth_cfg()
1380 create_fixup_graph (&fixup_graph); in mcf_smooth_cfg()
1381 find_minimum_cost_flow (&fixup_graph); in mcf_smooth_cfg()
1382 adjust_cfg_counts (&fixup_graph); in mcf_smooth_cfg()
1383 delete_fixup_graph (&fixup_graph); in mcf_smooth_cfg()