Fix divergence in indirect profiling (PR gcov-profile/84107).
commit604e9a8bcb3620d854eab6786b7ea028ab5f0efb
authormarxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 4 Oct 2018 12:41:14 +0000 (4 12:41 +0000)
committermarxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 4 Oct 2018 12:41:14 +0000 (4 12:41 +0000)
treee312a412289bc88a481440b075cfa23d7989e321
parent8b35b34d519e5ec808158d6d53d08c31cd6a4270
Fix divergence in indirect profiling (PR gcov-profile/84107).

2018-10-04  Martin Liska  <mliska@suse.cz>

PR gcov-profile/84107
* tree-profile.c (init_ic_make_global_vars):
Remove ic_void_ptr_var and ic_gcov_type_ptr_var.
Come up with new ic_tuple* variables.  Emit
__gcov_indirect_call{,_topn} variables.
(gimple_gen_ic_profiler): Access the variable
and emit gimple.
(gimple_gen_ic_func_profiler): Access
__gcov_indirect_call.callee field.
(gimple_init_gcov_profiler): Use ptr_type_node.
* value-prof.c (gimple_ic): Use ptr_type_node.
2018-10-04  Martin Liska  <mliska@suse.cz>

PR gcov-profile/84107
* libgcov-profiler.c (__gcov_indirect_call):
Change type to indirect_call_tuple.
(struct indirect_call_tuple): New struct.
(__gcov_indirect_call_topn_profiler): Change type.
(__gcov_indirect_call_profiler_v2): Use the new
variables.
* libgcov.h (struct indirect_call_tuple): New struct
definition.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264840 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/tree-profile.c
gcc/value-prof.c
libgcc/ChangeLog
libgcc/libgcov-profiler.c
libgcc/libgcov.h