Commit fd78e43e by Jan Hubicka Committed by Jan Hubicka

ipa-utils.c (ipa_merge_profiles): Fix merging when dst is uninitialized while src is not.


	* ipa-utils.c (ipa_merge_profiles): Fix merging when dst is
	uninitialized while src is not.

From-SVN: r249973
parent a4187dab
2017-07-04 Jan Hubicka <hubicka@ucw.cz>
* ipa-utils.c (ipa_merge_profiles): Fix merging when dst is
uninitialized while src is not.
2017-07-04 Richard Earnshaw <rearnsha@arm.com>
* common/config/arm/arm-common.c: Adjust include path for
......
......@@ -404,14 +404,17 @@ ipa_merge_profiles (struct cgraph_node *dst,
/* FIXME when we merge in unknown profile, we ought to set counts as
unsafe. */
if (!dst->count.initialized_p ())
if (!src->count.initialized_p ())
return;
if (symtab->dump_file)
{
fprintf (symtab->dump_file, "Merging profiles of %s to %s\n",
src->dump_name (), dst->dump_name ());
}
dst->count += src->count;
if (dst->count.initialized_p ())
dst->count += src->count;
else
dst->count = src->count;
/* This is ugly. We need to get both function bodies into memory.
If declaration is merged, we need to duplicate it to be able
......@@ -521,12 +524,20 @@ ipa_merge_profiles (struct cgraph_node *dst,
unsigned int i;
dstbb = BASIC_BLOCK_FOR_FN (dstcfun, srcbb->index);
dstbb->count += srcbb->count;
if (dstbb->count.initialized_p ())
dstbb->count += srcbb->count;
else
dstbb->count = srcbb->count;
for (i = 0; i < EDGE_COUNT (srcbb->succs); i++)
{
edge srce = EDGE_SUCC (srcbb, i);
edge dste = EDGE_SUCC (dstbb, i);
dste->count += srce->count;
if (dstbb->count.initialized_p ())
dste->count += srce->count;
else
dste->count = srce->count;
if (dstbb->count > 0 && dste->count.initialized_p ())
dste->probability = dste->count.probability_in (dstbb->count);
}
}
push_cfun (dstcfun);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment