diff options
Diffstat (limited to 'gcc/coverage.c')
-rw-r--r-- | gcc/coverage.c | 49 |
1 files changed, 18 insertions, 31 deletions
diff --git a/gcc/coverage.c b/gcc/coverage.c index 9e0185a..84fff13 100644 --- a/gcc/coverage.c +++ b/gcc/coverage.c @@ -73,7 +73,7 @@ struct counts_entry : pointer_hash <counts_entry> unsigned lineno_checksum; unsigned cfg_checksum; gcov_type *counts; - struct gcov_ctr_summary summary; + gcov_summary summary; /* hash_table support. */ static inline hashval_t hash (const counts_entry *); @@ -185,7 +185,7 @@ static void read_counts_file (void) { gcov_unsigned_t fn_ident = 0; - struct gcov_summary summary; + gcov_summary summary; unsigned new_summary = 1; gcov_unsigned_t tag; int is_error = 0; @@ -241,27 +241,21 @@ read_counts_file (void) else if (tag == GCOV_TAG_PROGRAM_SUMMARY) { struct gcov_summary sum; - unsigned ix; if (new_summary) memset (&summary, 0, sizeof (summary)); gcov_read_summary (&sum); - for (ix = 0; ix != GCOV_COUNTERS_SUMMABLE; ix++) - { - summary.ctrs[ix].runs += sum.ctrs[ix].runs; - summary.ctrs[ix].sum_all += sum.ctrs[ix].sum_all; - if (summary.ctrs[ix].run_max < sum.ctrs[ix].run_max) - summary.ctrs[ix].run_max = sum.ctrs[ix].run_max; - summary.ctrs[ix].sum_max += sum.ctrs[ix].sum_max; - } + summary.runs += sum.runs; + summary.sum_all += sum.sum_all; + if (summary.run_max < sum.run_max) + summary.run_max = sum.run_max; + summary.sum_max += sum.sum_max; if (new_summary) - memcpy (summary.ctrs[GCOV_COUNTER_ARCS].histogram, - sum.ctrs[GCOV_COUNTER_ARCS].histogram, - sizeof (gcov_bucket_type) * GCOV_HISTOGRAM_SIZE); + memcpy (summary.histogram, sum.histogram, + sizeof (gcov_bucket_type) * GCOV_HISTOGRAM_SIZE); else - gcov_histogram_merge (summary.ctrs[GCOV_COUNTER_ARCS].histogram, - sum.ctrs[GCOV_COUNTER_ARCS].histogram); + gcov_histogram_merge (summary.histogram, sum.histogram); new_summary = 0; } else if (GCOV_TAG_IS_COUNTER (tag) && fn_ident) @@ -282,8 +276,8 @@ read_counts_file (void) entry->ctr = elt.ctr; entry->lineno_checksum = lineno_checksum; entry->cfg_checksum = cfg_checksum; - if (elt.ctr < GCOV_COUNTERS_SUMMABLE) - entry->summary = summary.ctrs[elt.ctr]; + if (elt.ctr == GCOV_COUNTER_ARCS) + entry->summary = summary; entry->summary.num = n_counts; entry->counts = XCNEWVEC (gcov_type, n_counts); } @@ -306,23 +300,16 @@ read_counts_file (void) counts_hash = NULL; break; } - else if (elt.ctr >= GCOV_COUNTERS_SUMMABLE) - { - error ("cannot merge separate %s counters for function %u", - ctr_names[elt.ctr], fn_ident); - goto skip_merge; - } else { - entry->summary.runs += summary.ctrs[elt.ctr].runs; - entry->summary.sum_all += summary.ctrs[elt.ctr].sum_all; - if (entry->summary.run_max < summary.ctrs[elt.ctr].run_max) - entry->summary.run_max = summary.ctrs[elt.ctr].run_max; - entry->summary.sum_max += summary.ctrs[elt.ctr].sum_max; + entry->summary.runs += summary.runs; + entry->summary.sum_all += summary.sum_all; + if (entry->summary.run_max < summary.run_max) + entry->summary.run_max = summary.run_max; + entry->summary.sum_max += summary.sum_max; } for (ix = 0; ix != n_counts; ix++) entry->counts[ix] += gcov_read_counter (); - skip_merge:; } gcov_sync (offset, length); if ((is_error = gcov_is_error ())) @@ -345,7 +332,7 @@ read_counts_file (void) gcov_type * get_coverage_counts (unsigned counter, unsigned expected, unsigned cfg_checksum, unsigned lineno_checksum, - const struct gcov_ctr_summary **summary) + const gcov_summary **summary) { counts_entry *entry, elt; |