ipa-utils.c (ipa_merge_profiles): Merge profile_id.
* ipa-utils.c (ipa_merge_profiles): Merge profile_id. * coverage.c (coverage_compute_profile_id): Handle externally visible symbols. * lto/lto-symtab.c (lto_cgraph_replace_node): Don't re-merge tp_first_run. From-SVN: r209387
This commit is contained in:
parent
7b3b340eaf
commit
cb90235dad
@ -1,3 +1,9 @@
|
||||
2014-04-14 Jan Hubicka <hubicka@ucw.cz>
|
||||
|
||||
* ipa-utils.c (ipa_merge_profiles): Merge profile_id.
|
||||
* coverage.c (coverage_compute_profile_id): Handle externally visible
|
||||
symbols.
|
||||
|
||||
2014-04-14 Martin Jambor <mjambor@suse.cz>
|
||||
|
||||
* tree-sra.c (ipa_sra_preliminary_function_checks): Skip
|
||||
|
@ -555,18 +555,29 @@ coverage_compute_lineno_checksum (void)
|
||||
unsigned
|
||||
coverage_compute_profile_id (struct cgraph_node *n)
|
||||
{
|
||||
expanded_location xloc
|
||||
= expand_location (DECL_SOURCE_LOCATION (n->decl));
|
||||
unsigned chksum = xloc.line;
|
||||
unsigned chksum;
|
||||
|
||||
chksum = coverage_checksum_string (chksum, xloc.file);
|
||||
chksum = coverage_checksum_string
|
||||
(chksum, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (n->decl)));
|
||||
if (first_global_object_name)
|
||||
chksum = coverage_checksum_string
|
||||
(chksum, first_global_object_name);
|
||||
chksum = coverage_checksum_string
|
||||
(chksum, aux_base_name);
|
||||
/* Externally visible symbols have unique name. */
|
||||
if (TREE_PUBLIC (n->decl) || DECL_EXTERNAL (n->decl))
|
||||
{
|
||||
chksum = coverage_checksum_string
|
||||
(0, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (n->decl)));
|
||||
}
|
||||
else
|
||||
{
|
||||
expanded_location xloc
|
||||
= expand_location (DECL_SOURCE_LOCATION (n->decl));
|
||||
|
||||
chksum = xloc.line;
|
||||
chksum = coverage_checksum_string (chksum, xloc.file);
|
||||
chksum = coverage_checksum_string
|
||||
(chksum, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (n->decl)));
|
||||
if (first_global_object_name)
|
||||
chksum = coverage_checksum_string
|
||||
(chksum, first_global_object_name);
|
||||
chksum = coverage_checksum_string
|
||||
(chksum, aux_base_name);
|
||||
}
|
||||
|
||||
/* Non-negative integers are hopefully small enough to fit in all targets. */
|
||||
return chksum & 0x7fffffff;
|
||||
|
@ -660,6 +660,14 @@ ipa_merge_profiles (struct cgraph_node *dst,
|
||||
if (dst->tp_first_run > src->tp_first_run && src->tp_first_run)
|
||||
dst->tp_first_run = src->tp_first_run;
|
||||
|
||||
if (src->profile_id)
|
||||
{
|
||||
if (!dst->profile_id)
|
||||
dst->profile_id = src->profile_id;
|
||||
else
|
||||
gcc_assert (src->profile_id == dst->profile_id);
|
||||
}
|
||||
|
||||
if (!dst->count)
|
||||
return;
|
||||
if (cgraph_dump_file)
|
||||
|
@ -1,3 +1,8 @@
|
||||
2014-04-14 Jan Hubicka <hubicka@ucw.cz>
|
||||
|
||||
* lto/lto-symtab.c (lto_cgraph_replace_node): Don't re-merge
|
||||
tp_first_run.
|
||||
|
||||
2014-03-19 Jan Hubicka <hubicka@ucw.cz>
|
||||
|
||||
* lto.c: Include ipa-inline.h
|
||||
|
@ -91,12 +91,6 @@ lto_cgraph_replace_node (struct cgraph_node *node,
|
||||
if (node->decl != prevailing_node->decl)
|
||||
cgraph_release_function_body (node);
|
||||
|
||||
/* Time profile merging */
|
||||
if (node->tp_first_run)
|
||||
prevailing_node->tp_first_run = prevailing_node->tp_first_run ?
|
||||
MIN (prevailing_node->tp_first_run, node->tp_first_run) :
|
||||
node->tp_first_run;
|
||||
|
||||
/* Finally remove the replaced node. */
|
||||
cgraph_remove_node (node);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user