static gcov_unsigned_t gcov_exit_compute_summary (void) { struct gcov_info *gi_ptr; const struct gcov_fn_info *gfi_ptr; struct gcov_ctr_summary *cs_ptr; const struct gcov_ctr_info *ci_ptr; int f_ix; unsigned t_ix; gcov_unsigned_t c_num; gcov_unsigned_t crc32 = 0; /* Find the totals for this execution. */ memset (&this_prg, 0, sizeof (this_prg)); for (gi_ptr = gcov_list; gi_ptr; gi_ptr = gi_ptr->next) { crc32 = crc32_unsigned (crc32, gi_ptr->stamp); crc32 = crc32_unsigned (crc32, gi_ptr->n_functions); for (f_ix = 0; (unsigned)f_ix != gi_ptr->n_functions; f_ix++) { gfi_ptr = gi_ptr->functions[f_ix]; if (gfi_ptr && gfi_ptr->key != gi_ptr) gfi_ptr = 0; crc32 = crc32_unsigned (crc32, gfi_ptr ? gfi_ptr->cfg_checksum : 0); crc32 = crc32_unsigned (crc32, gfi_ptr ? gfi_ptr->lineno_checksum : 0); if (!gfi_ptr) continue; ci_ptr = gfi_ptr->ctrs; for (t_ix = 0; t_ix != GCOV_COUNTERS_SUMMABLE; t_ix++) { if (!gi_ptr->merge[t_ix]) continue; cs_ptr = &this_prg.ctrs[t_ix]; cs_ptr->num += ci_ptr->num; crc32 = crc32_unsigned (crc32, ci_ptr->num); for (c_num = 0; c_num < ci_ptr->num; c_num++) { cs_ptr->sum_all += ci_ptr->values[c_num]; if (cs_ptr->run_max < ci_ptr->values[c_num]) cs_ptr->run_max = ci_ptr->values[c_num]; } ci_ptr++; } } } gcov_compute_histogram (&this_prg); return crc32; }
static #endif gcov_unsigned_t compute_summary (struct gcov_info *list, struct gcov_summary *this_prg, size_t *max_length) { struct gcov_info *gi_ptr; const struct gcov_fn_info *gfi_ptr; struct gcov_ctr_summary *cs_ptr; const struct gcov_ctr_info *ci_ptr; int f_ix; unsigned t_ix; gcov_unsigned_t c_num; gcov_unsigned_t crc32 = 0; /* Find the totals for this execution. */ memset (this_prg, 0, sizeof (*this_prg)); *max_length = 0; for (gi_ptr = list; gi_ptr; gi_ptr = gi_ptr->next) { size_t len = strlen (gi_ptr->filename); if (len > *max_length) *max_length = len; crc32 = crc32_unsigned (crc32, gi_ptr->stamp); crc32 = crc32_unsigned (crc32, gi_ptr->n_functions); for (f_ix = 0; (unsigned)f_ix != gi_ptr->n_functions; f_ix++) { gfi_ptr = gi_ptr->functions[f_ix]; if (gfi_ptr && gfi_ptr->key != gi_ptr) gfi_ptr = 0; crc32 = crc32_unsigned (crc32, gfi_ptr ? gfi_ptr->cfg_checksum : 0); crc32 = crc32_unsigned (crc32, gfi_ptr ? gfi_ptr->lineno_checksum : 0); if (!gfi_ptr) continue; ci_ptr = gfi_ptr->ctrs; for (t_ix = 0; t_ix != GCOV_COUNTERS_SUMMABLE; t_ix++) { if (!gi_ptr->merge[t_ix]) continue; cs_ptr = &(this_prg->ctrs[t_ix]); cs_ptr->num += ci_ptr->num; crc32 = crc32_unsigned (crc32, ci_ptr->num); for (c_num = 0; c_num < ci_ptr->num; c_num++) { cs_ptr->sum_all += ci_ptr->values[c_num]; if (cs_ptr->run_max < ci_ptr->values[c_num]) cs_ptr->run_max = ci_ptr->values[c_num]; } ci_ptr++; } } } gcov_compute_histogram (list, this_prg); return crc32; }