On Thu, Aug 14, 2014 at 11:36 AM, Xinliang David Li <davi...@google.com> wrote: > Ok. > > The interfaces of counter reading/getting now becomes confusing. Should it > be better documented somewhere so that developer knows what is the right one > to use in a certain context?
I think it is documented in libgcov.h and accesses should be through the new gcov_get_counter interface, but these just got missed when it was ported from trunk. Teresa > > David > > > > On Thu, Aug 14, 2014 at 11:27 AM, Teresa Johnson <tejohn...@google.com> > wrote: >> >> Fix a couple problems found during testing. >> >> Backport from trunk (r212694) failed to fixup gcov_read_counter >> invocations in google-specific code. Also, forward port >> r211800 from google/4_8 to tolerate differences after COMDAT >> fixup. >> >> Passes manual testing, ok if passes regression tests? >> >> Thanks, >> Teresa >> >> 2014-08-14 Teresa Johnson <tejohn...@google.com> >> >> * libgcov-merge.c (__gcov_merge_dc): Use gcov_get_counter, >> Relax the check after COMDAT fixup. >> (__gcov_merge_icall_topn): Use gcov_get_counter. >> >> Index: libgcov-merge.c >> =================================================================== >> --- libgcov-merge.c (revision 213975) >> +++ libgcov-merge.c (working copy) >> @@ -95,8 +95,8 @@ __gcov_merge_dc (gcov_type *counters, unsigned n_c >> gcc_assert (!(n_counters % 2)); >> for (i = 0; i < n_counters; i += 2) >> { >> - gcov_type global_id = gcov_read_counter (); >> - gcov_type call_count = gcov_read_counter (); >> + gcov_type global_id = gcov_get_counter_target (); >> + gcov_type call_count = gcov_get_counter (); >> >> /* Note that global id counter may never have been set if no calls >> were >> made from this call-site. */ >> @@ -108,7 +108,10 @@ __gcov_merge_dc (gcov_type *counters, unsigned n_c >> else if (__gcov_is_gid_insane (global_id)) >> global_id = counters[i]; >> >> - gcc_assert (counters[i] == global_id); >> + /* In the case of inconsistency, use the src's target. */ >> + if (counters[i] != global_id) >> + fprintf (stderr, "Warning: Inconsistent call targets in" >> + " direct-call profile.\n"); >> } >> else if (global_id) >> counters[i] = global_id; >> @@ -158,12 +161,12 @@ __gcov_merge_icall_topn (gcov_type *counters, unsi >> } >> >> /* Skip the number_of_eviction entry. */ >> - gcov_read_counter (); >> + gcov_get_counter (); >> for (k = 0; k < GCOV_ICALL_TOPN_NCOUNTS - 1; k += 2) >> { >> int found = 0; >> - gcov_type global_id = gcov_read_counter (); >> - gcov_type call_count = gcov_read_counter (); >> + gcov_type global_id = gcov_get_counter_target (); >> + gcov_type call_count = gcov_get_counter (); >> for (m = 0; m < j; m += 2) >> { >> if (tmp_array[m] == global_id) >> >> >> -- >> Teresa Johnson | Software Engineer | tejohn...@google.com | 408-460-2413 > > -- Teresa Johnson | Software Engineer | tejohn...@google.com | 408-460-2413