Lines Matching defs:node

110 /* E is expected to be an edge being inlined.  Clone destination node of
113 clones or re-using node originally representing out-of-line function call.
223 cgraph_estimate_growth (struct cgraph_node *node)
227 if (node->global.estimated_growth != INT_MIN)
228 return node->global.estimated_growth;
230 for (e = node->callers; e; e = e->next_caller)
232 growth += (cgraph_estimate_size_after_inlining (1, e->caller, node)
238 if (!node->needed && !DECL_EXTERNAL (node->decl))
239 growth -= node->global.insns;
241 node->global.estimated_growth = growth;
419 update_caller_keys (fibheap_t heap, struct cgraph_node *node,
425 if (!node->local.inlinable || node->local.disregard_inline_limits
426 || node->global.inlined_to)
428 if (bitmap_bit_p (updated_nodes, node->uid))
430 bitmap_set_bit (updated_nodes, node->uid);
431 node->global.estimated_growth = INT_MIN;
433 if (!node->local.inlinable)
436 if (!cgraph_default_inline_p (node, &failed_reason))
438 for (edge = node->callers; edge; edge = edge->next_caller)
449 for (edge = node->callers; edge; edge = edge->next_caller)
472 update_callee_keys (fibheap_t heap, struct cgraph_node *node,
476 node->global.estimated_growth = INT_MIN;
478 for (e = node->callees; e; e = e->next_callee)
489 lookup_recursive_calls (struct cgraph_node *node, struct cgraph_node *where,
495 if (e->callee == node)
507 lookup_recursive_calls (node, e->callee, heap);
516 cgraph_find_cycles (struct cgraph_node *node, htab_t cycles)
520 if (node->aux)
523 slot = htab_find_slot (cycles, node, INSERT);
527 fprintf (dump_file, "Cycle contains %s\n", cgraph_node_name (node));
528 *slot = node;
533 node->aux = node;
534 for (e = node->callees; e; e = e->next_callee)
536 node->aux = 0;
539 /* Flatten the cgraph node. We have to be careful in recursing
545 cgraph_flatten_node (struct cgraph_node *node, htab_t cycles)
549 for (e = node->callees; e; e = e->next_callee)
555 && !cgraph_recursive_inlining_p (node, e->callee,
573 cgraph_decide_recursive_inlining (struct cgraph_node *node)
584 if (DECL_DECLARED_INLINE_P (node->decl))
592 || cgraph_estimate_size_after_inlining (1, node, node) >= limit)
595 lookup_recursive_calls (node, node, heap);
605 cgraph_node_name (node));
608 master_clone = cgraph_clone_node (node, node->count, 1, false);
616 && (cgraph_estimate_size_after_inlining (1, node, master_clone)
625 if (node->decl == curr->callee->decl)
643 if (curr->count * 100 / node->count < probability)
656 if (node->count)
659 (double)curr->count / node->count);
665 lookup_recursive_calls (node, curr->callee, heap);
675 master_clone->global.insns, node->global.insns);
680 for (node = cgraph_nodes; node != master_clone;
681 node = next)
683 next = node->next;
684 if (node->global.inlined_to == master_clone)
685 cgraph_remove_node (node);
698 cgraph_set_inline_failed (struct cgraph_node *node, const char *reason)
704 for (e = node->callers; e; e = e->next_caller)
719 struct cgraph_node *node;
730 for (node = cgraph_nodes; node; node = node->next)
732 if (!node->local.inlinable || !node->callers
733 || node->local.disregard_inline_limits)
736 fprintf (dump_file, "Considering inline candidate %s.\n", cgraph_node_name (node));
738 node->global.estimated_growth = INT_MIN;
739 if (!cgraph_default_inline_p (node, &failed_reason))
741 cgraph_set_inline_failed (node, failed_reason);
745 for (edge = node->callers; edge; edge = edge->next_caller)
899 struct cgraph_node *node;
908 for (node = cgraph_nodes; node; node = node->next)
909 if (node->analyzed && (node->needed || node->reachable))
917 node->local.self_insns = node->global.insns
918 = estimate_num_insns (node->decl);
920 initial_insns += node->local.self_insns;
921 gcc_assert (node->local.self_insns == node->global.insns);
922 for (e = node->callees; e; e = e->next_callee)
943 for (node = cgraph_nodes; node; node = node->next)
944 node->aux = 0;
955 node = order[i];
958 if (lookup_attribute ("flatten", DECL_ATTRIBUTES (node->decl)) != NULL)
964 "Flattening %s\n", cgraph_node_name (node));
966 cgraph_find_cycles (node, cycles);
967 cgraph_flatten_node (node, cycles);
975 if (!node->local.disregard_inline_limits)
980 cgraph_node_name (node), node->global.insns);
982 for (e = node->callers; e; e = next)
1016 node = order[i];
1018 if (node->callers && !node->callers->next_caller && !node->needed
1019 && node->local.inlinable && node->callers->inline_failed
1020 && !DECL_EXTERNAL (node->decl) && !DECL_COMDAT (node->decl))
1026 for (node1 = node->callers->caller;
1037 cgraph_node_name (node), node->global.insns);
1040 cgraph_node_name (node->callers->caller),
1041 node->callers->caller->global.insns);
1046 if (cgraph_check_inline_limits (node->callers->caller, node,
1049 cgraph_mark_inline (node->callers);
1054 cgraph_node_name (node->callers->caller),
1055 node->callers->caller->global.insns,
1084 cgraph_decide_inlining_incrementally (struct cgraph_node *node, bool early)
1091 for (e = node->callees; e; e = e->next_callee)
1094 && !cgraph_recursive_inlining_p (node, e->callee, &e->inline_failed)
1103 fprintf (dump_file, " into %s\n", cgraph_node_name (node));
1111 for (e = node->callees; e; e = e->next_callee)
1115 && !cgraph_recursive_inlining_p (node, e->callee, &e->inline_failed)
1119 && cgraph_check_inline_limits (node, e->callee, &e->inline_failed,
1129 fprintf (dump_file, " into %s\n", cgraph_node_name (node));
1139 push_cfun (DECL_STRUCT_FUNCTION (node->decl));
1141 current_function_decl = node->decl;
1143 node->local.self_insns = node->global.insns;
1186 struct cgraph_node *node;
1192 for (node = cgraph_nodes; node; node = node->next)
1193 gcc_assert (!node->aux);
1200 node = order[i];
1201 if (node->analyzed && (node->needed || node->reachable))
1202 node->local.self_insns = node->global.insns
1203 = estimate_num_insns (node->decl);
1207 node = order[i];
1208 if (node->analyzed && node->local.inlinable
1209 && (node->needed || node->reachable)
1210 && node->callers)
1212 if (cgraph_decide_inlining_incrementally (node, true))
1218 for (node = cgraph_nodes; node; node = node->next)
1219 gcc_assert (!node->global.inlined_to);