Commit cb90235d by Jan Hubicka Committed by Jan Hubicka

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
parent 7b3b340e
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> 2014-04-14 Martin Jambor <mjambor@suse.cz>
* tree-sra.c (ipa_sra_preliminary_function_checks): Skip * tree-sra.c (ipa_sra_preliminary_function_checks): Skip
......
...@@ -555,18 +555,29 @@ coverage_compute_lineno_checksum (void) ...@@ -555,18 +555,29 @@ coverage_compute_lineno_checksum (void)
unsigned unsigned
coverage_compute_profile_id (struct cgraph_node *n) coverage_compute_profile_id (struct cgraph_node *n)
{ {
expanded_location xloc unsigned chksum;
= expand_location (DECL_SOURCE_LOCATION (n->decl));
unsigned chksum = xloc.line;
chksum = coverage_checksum_string (chksum, xloc.file); /* Externally visible symbols have unique name. */
chksum = coverage_checksum_string if (TREE_PUBLIC (n->decl) || DECL_EXTERNAL (n->decl))
(chksum, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (n->decl))); {
if (first_global_object_name) chksum = coverage_checksum_string
chksum = coverage_checksum_string (0, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (n->decl)));
(chksum, first_global_object_name); }
chksum = coverage_checksum_string else
(chksum, aux_base_name); {
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. */ /* Non-negative integers are hopefully small enough to fit in all targets. */
return chksum & 0x7fffffff; return chksum & 0x7fffffff;
......
...@@ -660,6 +660,14 @@ ipa_merge_profiles (struct cgraph_node *dst, ...@@ -660,6 +660,14 @@ ipa_merge_profiles (struct cgraph_node *dst,
if (dst->tp_first_run > src->tp_first_run && src->tp_first_run) if (dst->tp_first_run > src->tp_first_run && src->tp_first_run)
dst->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) if (!dst->count)
return; return;
if (cgraph_dump_file) if (cgraph_dump_file)
......
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> 2014-03-19 Jan Hubicka <hubicka@ucw.cz>
* lto.c: Include ipa-inline.h * lto.c: Include ipa-inline.h
......
...@@ -91,12 +91,6 @@ lto_cgraph_replace_node (struct cgraph_node *node, ...@@ -91,12 +91,6 @@ lto_cgraph_replace_node (struct cgraph_node *node,
if (node->decl != prevailing_node->decl) if (node->decl != prevailing_node->decl)
cgraph_release_function_body (node); 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. */ /* Finally remove the replaced node. */
cgraph_remove_node (node); cgraph_remove_node (node);
} }
......
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