diff options
author | Martin Liska <mliska@suse.cz> | 2018-10-04 14:41:14 +0200 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2018-10-04 12:41:14 +0000 |
commit | 3edbcdbead288664d874dd3a2e0d8ada4c565af0 (patch) | |
tree | e312a412289bc88a481440b075cfa23d7989e321 /libgcc/libgcov.h | |
parent | 668f8d452697359a150bd651149c75109f66eb06 (diff) | |
download | gcc-3edbcdbead288664d874dd3a2e0d8ada4c565af0.zip gcc-3edbcdbead288664d874dd3a2e0d8ada4c565af0.tar.gz gcc-3edbcdbead288664d874dd3a2e0d8ada4c565af0.tar.bz2 |
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
Diffstat (limited to 'libgcc/libgcov.h')
-rw-r--r-- | libgcc/libgcov.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/libgcc/libgcov.h b/libgcc/libgcov.h index 2142287..ee05a68 100644 --- a/libgcc/libgcov.h +++ b/libgcc/libgcov.h @@ -226,6 +226,15 @@ struct gcov_master gcov_unsigned_t version; struct gcov_root *root; }; + +struct indirect_call_tuple +{ + /* Callee function. */ + void *callee; + + /* Pointer to counters. */ + gcov_type *counters; +}; /* Exactly one of these will be active in the process. */ extern struct gcov_master __gcov_master; |