aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cgraphclones.c5
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 39486ff..1ac0ef0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2017-11-23 Jan Hubicka <hubicka@ucw.cz>
+
+ * cgraphclones.c (cgraph_node::create_clone): Fix updating of profile
+ when inlining.
+
2017-11-23 Tom de Vries <tom@codesourcery.com>
* config/sh/sh.h (ASM_OUTPUT_ADDR_VEC_ELT): Wrap in "do {} while (0)".
diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c
index ef39d85..0e7e35b 100644
--- a/gcc/cgraphclones.c
+++ b/gcc/cgraphclones.c
@@ -428,7 +428,10 @@ cgraph_node::create_clone (tree new_decl, profile_count prof_count,
if (new_inlined_to)
dump_callgraph_transformation (this, new_inlined_to, "inlining to");
- prof_count = count.combine_with_ipa_count (prof_count);
+ /* When inlining we scale precisely to prof_count, when cloning we can
+ preserve local profile. */
+ if (!new_inlined_to)
+ prof_count = count.combine_with_ipa_count (prof_count);
new_node->count = prof_count;
/* Update IPA profile. Local profiles need no updating in original. */