diff options
author | Eugene Rozenfeld <erozen@microsoft.com> | 2021-08-02 18:36:09 -0700 |
---|---|---|
committer | Eugene Rozenfeld <erozen@microsoft.com> | 2021-08-03 14:36:33 -0700 |
commit | 285aa6895d479bed8e72ad363290846645b6faa0 (patch) | |
tree | 90d3dc66ddf7d0008b575b91b69b4f0889231d1f /gcc | |
parent | 9265b378531391498ec1727f67a45da72a6c07e9 (diff) | |
download | gcc-285aa6895d479bed8e72ad363290846645b6faa0.zip gcc-285aa6895d479bed8e72ad363290846645b6faa0.tar.gz gcc-285aa6895d479bed8e72ad363290846645b6faa0.tar.bz2 |
Fix indirect call inlining with AutoFDO
The histogram value for indirect calls was incorrectly set up.
That is fixed now.
With this change the tree-prof tests checking indirect call inlining with AutoFDO
in gcc.dg and g++.dg are passing.
Resolves:
PR gcov-profile/71672 - inlining indirect calls does not work with autofdo
gcc/ChangeLog:
PR gcov-profile/71672
* auto-profile.c (afdo_indirect_call): Fix setup of the historgram value for indirect calls.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/auto-profile.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/gcc/auto-profile.c b/gcc/auto-profile.c index b23b82b..4c1fc6b 100644 --- a/gcc/auto-profile.c +++ b/gcc/auto-profile.c @@ -1009,13 +1009,18 @@ afdo_indirect_call (gimple_stmt_iterator *gsi, const icall_target_map &map, histogram_value hist = gimple_alloc_histogram_value ( cfun, HIST_TYPE_INDIR_CALL, stmt, callee); - hist->n_counters = 3; + hist->n_counters = 4; hist->hvalue.counters = XNEWVEC (gcov_type, hist->n_counters); gimple_add_histogram_value (cfun, stmt, hist); - hist->hvalue.counters[0] = direct_call->profile_id; - hist->hvalue.counters[1] = max_iter->second; - hist->hvalue.counters[2] = total; + // Total counter + hist->hvalue.counters[0] = total; + // Number of value/counter pairs + hist->hvalue.counters[1] = 1; + // Value + hist->hvalue.counters[2] = direct_call->profile_id; + // Counter + hist->hvalue.counters[3] = max_iter->second; if (!transform) return; |