Lines Matching defs:edge

110 /* E is expected to be an edge being inlined.  Clone destination node of
111 the edge and redirect it to the new clone.
151 /* Mark edge E as inlined and update callgraph accordingly.
192 Return following unredirected edge in the list of callers
196 cgraph_mark_inline (struct cgraph_edge *edge)
198 struct cgraph_node *to = edge->caller;
199 struct cgraph_node *what = edge->callee;
211 if (e == edge)
212 edge = next;
217 return edge;
363 cgraph_maybe_hot_edge_p (struct cgraph_edge *edge)
366 && (edge->count
378 With profiling we use number of executions of each edge to drive the cost.
384 cgraph_edge_badness (struct cgraph_edge *edge)
389 cgraph_estimate_size_after_inlining (1, edge->caller, edge->callee);
390 growth -= edge->caller->global.insns;
395 return ((int)((double)edge->count * INT_MIN / max_count)) / growth;
399 int nest = MIN (edge->loop_nest, 8);
400 int badness = cgraph_estimate_growth (edge->callee) * 256;
409 if (cgraph_recursive_inlining_p (edge->caller, edge->callee, NULL))
416 /* Recompute heap nodes for each of caller edge. */
422 struct cgraph_edge *edge;
438 for (edge = node->callers; edge; edge = edge->next_caller)
439 if (edge->aux)
441 fibheap_delete_node (heap, edge->aux);
442 edge->aux = NULL;
443 if (edge->inline_failed)
444 edge->inline_failed = failed_reason;
449 for (edge = node->callers; edge; edge = edge->next_caller)
450 if (edge->inline_failed)
452 int badness = cgraph_edge_badness (edge);
453 if (edge->aux)
455 fibnode_t n = edge->aux;
456 gcc_assert (n->data == edge);
463 fibheap_delete_node (heap, edge->aux);
465 edge->aux = fibheap_insert (heap, badness, edge);
647 " Probability of edge is too small\n");
720 struct cgraph_edge *edge;
745 for (edge = node->callers; edge; edge = edge->next_caller)
746 if (edge->inline_failed)
748 gcc_assert (!edge->aux);
749 edge->aux = fibheap_insert (heap, cgraph_edge_badness (edge), edge);
752 while (overall_insns <= max_insns && (edge = fibheap_extract_min (heap)))
757 cgraph_estimate_size_after_inlining (1, edge->caller, edge->callee);
759 growth -= edge->caller->global.insns;
765 cgraph_node_name (edge->callee),
766 edge->callee->global.insns);
771 cgraph_node_name (edge->caller),
772 cgraph_estimate_growth (edge->callee),
773 cgraph_edge_badness (edge));
774 if (edge->count)
775 fprintf (dump_file," Called "HOST_WIDEST_INT_PRINT_DEC"x\n", edge->count);
777 gcc_assert (edge->aux);
778 edge->aux = NULL;
779 if (!edge->inline_failed)
793 where = edge->caller;
796 if (where->decl == edge->callee->decl)
802 edge->inline_failed
803 = (edge->callee->local.disregard_inline_limits ? N_("recursive inlining") : "");
810 if (!cgraph_maybe_hot_edge_p (edge) && growth > 0)
812 if (!cgraph_recursive_inlining_p (edge->caller, edge->callee,
813 &edge->inline_failed))
815 edge->inline_failed =
818 fprintf (dump_file, " inline_failed:%s.\n", edge->inline_failed);
822 if (!cgraph_default_inline_p (edge->callee, &edge->inline_failed))
824 if (!cgraph_recursive_inlining_p (edge->caller, edge->callee,
825 &edge->inline_failed))
828 fprintf (dump_file, " inline_failed:%s.\n", edge->inline_failed);
832 if (cgraph_recursive_inlining_p (edge->caller, edge->callee,
833 &edge->inline_failed))
835 where = edge->caller;
845 if (!cgraph_check_inline_limits (edge->caller, edge->callee,
846 &edge->inline_failed, true))
850 cgraph_node_name (edge->caller), edge->inline_failed);
853 callee = edge->callee;
854 cgraph_mark_inline_edge (edge, true);
857 where = edge->caller;
875 cgraph_node_name (edge->caller),
876 edge->caller->global.insns,
880 while ((edge = fibheap_extract_min (heap)) != NULL)
882 gcc_assert (edge->aux);
883 edge->aux = NULL;
884 if (!edge->callee->local.disregard_inline_limits && edge->inline_failed
885 && !cgraph_recursive_inlining_p (edge->caller, edge->callee,
886 &edge->inline_failed))
887 edge->inline_failed = N_("--param inline-unit-growth limit reached");