aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/ipa-inline-transform.c
diff options
context:
space:
mode:
authorRong Xu <xur@google.com>2014-08-06 17:50:42 -0700
committerRong Xu <xur@google.com>2014-08-06 17:50:42 -0700
commitf1c18afafc2b321465ae6b07ede127095942d7dc (patch)
tree812093eebfa8510367718c12c02f7da03c0e73bf /gcc-4.9/gcc/ipa-inline-transform.c
parent38a8aecfb882072900434499696b5c32a2274515 (diff)
downloadtoolchain_gcc-f1c18afafc2b321465ae6b07ede127095942d7dc.tar.gz
toolchain_gcc-f1c18afafc2b321465ae6b07ede127095942d7dc.tar.bz2
toolchain_gcc-f1c18afafc2b321465ae6b07ede127095942d7dc.zip
[gcc-4.9] Merge svn r213650 from google/gcc-4_9 branch
Merge svn r213650 from google/gcc-4_9 branch. Tested with arm,x86,mips,arm64,x86_64,mips64 build in liunux/windows. Change-Id: I0c07f67d516074172aa393003eee664d01f2e0f2
Diffstat (limited to 'gcc-4.9/gcc/ipa-inline-transform.c')
-rw-r--r--gcc-4.9/gcc/ipa-inline-transform.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc-4.9/gcc/ipa-inline-transform.c b/gcc-4.9/gcc/ipa-inline-transform.c
index aaf427d12..69598b3c8 100644
--- a/gcc-4.9/gcc/ipa-inline-transform.c
+++ b/gcc-4.9/gcc/ipa-inline-transform.c
@@ -186,8 +186,14 @@ clone_inlined_nodes (struct cgraph_edge *e, bool duplicate,
else
{
struct cgraph_node *n;
- if (flag_auto_profile && L_IPO_COMP_MODE
- && cgraph_pre_profiling_inlining_done)
+ /* Disable updating of callee count if caller is not the resolved node
+ to avoid multiple updates of the callee's profile when inlining
+ into COMDAT copies. Both AutoFDO and regular FDO will have the
+ same edge counts for all unresolved nodes. In AutoFDO this is due
+ to profile correlation by function name and source position. In
+ regular FDO this is due to COMDAT profile merging performed on the
+ dynamic callgraph at the end of LIPO profiling. */
+ if (L_IPO_COMP_MODE && cgraph_pre_profiling_inlining_done)
{
struct cgraph_node *caller = e->caller;
if (caller->global.inlined_to)