Fix divergence in indirect profiling (PR gcov-profile/84107).
authorMartin Liska <mliska@suse.cz>
Thu, 4 Oct 2018 12:41:14 +0000 (14:41 +0200)
committerMartin Liska <marxin@gcc.gnu.org>
Thu, 4 Oct 2018 12:41:14 +0000 (12:41 +0000)
commit3edbcdbead288664d874dd3a2e0d8ada4c565af0
treee312a412289bc88a481440b075cfa23d7989e321
parent668f8d452697359a150bd651149c75109f66eb06
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.

From-SVN: r264840
gcc/ChangeLog
gcc/tree-profile.c
gcc/value-prof.c
libgcc/ChangeLog
libgcc/libgcov-profiler.c
libgcc/libgcov.h