mirror of git://gcc.gnu.org/git/gcc.git
* cgraph.c (cgraph_node::dump): Complain about profile insanities.
From-SVN: r249123
This commit is contained in:
parent
6cddb61ca1
commit
7c41b76e9f
|
|
@ -1,3 +1,7 @@
|
||||||
|
2017-06-11 Jan Hubicka <hubicka@ucw.cz>
|
||||||
|
|
||||||
|
* cgraph.c (cgraph_node::dump): Complain about profile insanities.
|
||||||
|
|
||||||
2017-06-12 Doug Rupp <rupp@adacore.com>
|
2017-06-12 Doug Rupp <rupp@adacore.com>
|
||||||
|
|
||||||
* config.gcc (*-*-vxworks*): Set use_gcc_stdint to "provide".
|
* config.gcc (*-*-vxworks*): Set use_gcc_stdint to "provide".
|
||||||
|
|
|
||||||
35
gcc/cgraph.c
35
gcc/cgraph.c
|
|
@ -2094,7 +2094,7 @@ cgraph_node::dump (FILE *f)
|
||||||
fprintf (f, " Function flags:");
|
fprintf (f, " Function flags:");
|
||||||
if (count.initialized_p ())
|
if (count.initialized_p ())
|
||||||
{
|
{
|
||||||
fprintf (f, " profile_count ");
|
fprintf (f, " count: ");
|
||||||
count.dump (f);
|
count.dump (f);
|
||||||
}
|
}
|
||||||
if (origin)
|
if (origin)
|
||||||
|
|
@ -2172,10 +2172,13 @@ cgraph_node::dump (FILE *f)
|
||||||
|
|
||||||
fprintf (f, " Called by: ");
|
fprintf (f, " Called by: ");
|
||||||
|
|
||||||
|
profile_count sum = profile_count::zero ();
|
||||||
for (edge = callers; edge; edge = edge->next_caller)
|
for (edge = callers; edge; edge = edge->next_caller)
|
||||||
{
|
{
|
||||||
fprintf (f, "%s ", edge->caller->dump_name ());
|
fprintf (f, "%s ", edge->caller->dump_name ());
|
||||||
edge->dump_edge_flags (f);
|
edge->dump_edge_flags (f);
|
||||||
|
if (edge->count.initialized_p ())
|
||||||
|
sum += edge->count;
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf (f, "\n Calls: ");
|
fprintf (f, "\n Calls: ");
|
||||||
|
|
@ -2186,6 +2189,36 @@ cgraph_node::dump (FILE *f)
|
||||||
}
|
}
|
||||||
fprintf (f, "\n");
|
fprintf (f, "\n");
|
||||||
|
|
||||||
|
if (count.initialized_p ())
|
||||||
|
{
|
||||||
|
bool ok = true;
|
||||||
|
bool min = false;
|
||||||
|
ipa_ref *ref;
|
||||||
|
|
||||||
|
FOR_EACH_ALIAS (this, ref)
|
||||||
|
if (dyn_cast <cgraph_node *> (ref->referring)->count.initialized_p ())
|
||||||
|
sum += dyn_cast <cgraph_node *> (ref->referring)->count;
|
||||||
|
|
||||||
|
if (global.inlined_to
|
||||||
|
|| (symtab->state < EXPANSION
|
||||||
|
&& ultimate_alias_target () == this && only_called_directly_p ()))
|
||||||
|
ok = !count.differs_from_p (sum);
|
||||||
|
else if (count > profile_count::from_gcov_type (100)
|
||||||
|
&& count < sum.apply_scale (99, 100))
|
||||||
|
ok = false, min = true;
|
||||||
|
if (!ok)
|
||||||
|
{
|
||||||
|
fprintf (f, " Invalid sum of caller counts ");
|
||||||
|
sum.dump (f);
|
||||||
|
if (min)
|
||||||
|
fprintf (f, ", should be at most ");
|
||||||
|
else
|
||||||
|
fprintf (f, ", should be ");
|
||||||
|
count.dump (f);
|
||||||
|
fprintf (f, "\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (edge = indirect_calls; edge; edge = edge->next_callee)
|
for (edge = indirect_calls; edge; edge = edge->next_callee)
|
||||||
{
|
{
|
||||||
if (edge->indirect_info->polymorphic)
|
if (edge->indirect_info->polymorphic)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue