Lines Matching refs:parent

59 arc_lookup (Sym *parent, Sym *child)
63 if (!parent || !child)
65 printf ("[arc_lookup] parent == 0 || child == 0\n");
68 DBG (LOOKUPDEBUG, printf ("[arc_lookup] parent %s child %s\n",
69 parent->name, child->name));
70 for (arc = parent->cg.children; arc; arc = arc->next_child)
72 DBG (LOOKUPDEBUG, printf ("[arc_lookup]\t parent %s child %s\n",
73 arc->parent->name, arc->child->name));
88 arc_add (Sym *parent, Sym *child, unsigned long count)
94 count, parent->name, child->name));
95 arc = arc_lookup (parent, child);
108 arc->parent = parent;
112 /* If this isn't an arc for a recursive call to parent, then add it
114 if (parent != child)
143 /* prepend this child to the children of this parent: */
144 arc->next_child = parent->cg.children;
145 parent->cg.children = arc;
147 /* prepend this parent to the parents of this child: */
164 propagate_time (Sym *parent)
170 if (parent->cg.prop.fract == 0.0)
175 /* gather time from children of this parent: */
177 for (arc = parent->cg.children; arc; arc = arc->next_child)
180 if (arc->count == 0 || child == parent || child->cg.prop.fract == 0)
186 if (parent->cg.cyc.num == child->cg.cyc.num)
190 if (parent->cg.top_order <= child->cg.top_order)
198 if (parent->cg.top_order <= child->cg.top_order)
215 parent->cg.child_time += share;
218 prop_share = parent->cg.prop.fract * share;
221 parent->cg.prop.child += prop_share;
222 arc->time *= parent->cg.prop.fract;
223 arc->child_time *= parent->cg.prop.fract;
225 /* add this share to the parent's cycle header, if any: */
226 if (parent->cg.cyc.head != parent)
228 parent->cg.cyc.head->cg.child_time += share;
229 parent->cg.cyc.head->cg.prop.child += prop_share;
236 printf ("[prop_time] parent\t");
237 print_name (parent);
335 if (arc->parent == member)
339 if (arc->parent->cg.cyc.num == num)
354 * Check if any parent of this child (or outside parents of this
362 Sym *head, *parent, *member;
373 parent = arc->parent;
374 if (child == parent)
378 child->cg.print_flag |= parent->cg.print_flag;
386 child->cg.prop.fract += parent->cg.prop.fract
403 if (arc->parent->cg.cyc.head == head)
407 parent = arc->parent;
408 head->cg.print_flag |= parent->cg.print_flag;
416 head->cg.prop.fract += parent->cg.prop.fract
449 * from parent. This way, we are linear in the number of arcs
596 Sym *parent, **time_sorted_syms, **top_sorted_syms;
604 for (parent = symtab.base; parent < symtab.limit; parent++)
606 parent->cg.child_time = 0.0;
607 arc = arc_lookup (parent, parent);
608 if (arc && parent == arc->child)
610 parent->ncalls -= arc->count;
611 parent->cg.self_calls = arc->count;
615 parent->cg.self_calls = 0;
617 parent->cg.prop.fract = 0.0;
618 parent->cg.prop.self = 0.0;
619 parent->cg.prop.child = 0.0;
620 parent->cg.print_flag = FALSE;
621 parent->cg.top_order = DFN_NAN;
622 parent->cg.cyc.num = 0;
623 parent->cg.cyc.head = parent;
624 parent->cg.cyc.next = 0;
626 find_call (parent, parent->addr, (parent + 1)->addr);
631 for (parent = symtab.base; parent < symtab.limit; parent++)
633 if (parent->cg.top_order == DFN_NAN)
634 cg_dfn (parent);