libgcov-driver.c (run_accounted): Make global level static.

* libgcov-driver.c (run_accounted): Make global level static.
	(gcov_exit_merge_summary): Silence warning; do not clear
	run_accounted here.
	(gcov_exit): Clear it here.

From-SVN: r204993
This commit is contained in:
Jan Hubicka 2013-11-19 02:08:02 +01:00 committed by Jan Hubicka
parent 6fec8b036d
commit 7f369373da
2 changed files with 12 additions and 6 deletions

View File

@ -1,5 +1,10 @@
2013-11-18 Jan Hubicka <jh@suse.cz> 2013-11-18 Jan Hubicka <jh@suse.cz>
* libgcov-driver.c (run_accounted): Make global level static.
(gcov_exit_merge_summary): Silence warning; do not clear
run_accounted here.
(gcov_exit): Clear it here.
* libgcov-driver.c (gcov_exit_merge_summary): Fix setting * libgcov-driver.c (gcov_exit_merge_summary): Fix setting
run_accounted. run_accounted.

View File

@ -325,6 +325,10 @@ static char *gi_filename;
static struct gcov_fn_buffer *fn_buffer; static struct gcov_fn_buffer *fn_buffer;
/* buffer for summary from other programs to be written out. */ /* buffer for summary from other programs to be written out. */
static struct gcov_summary_buffer *sum_buffer; static struct gcov_summary_buffer *sum_buffer;
/* If application calls fork or exec multiple times, we end up storing
profile repeadely. We should not account this as multiple runs or
functions executed once may mistakely become cold. */
static int run_accounted = 0;
/* This funtions computes the program level summary and the histo-gram. /* This funtions computes the program level summary and the histo-gram.
It computes and returns CRC32 and stored summari in THIS_PRG. */ It computes and returns CRC32 and stored summari in THIS_PRG. */
@ -646,14 +650,11 @@ gcov_exit_write_gcda (const struct gcov_info *gi_ptr,
static int static int
gcov_exit_merge_summary (const struct gcov_info *gi_ptr, struct gcov_summary *prg, gcov_exit_merge_summary (const struct gcov_info *gi_ptr, struct gcov_summary *prg,
gcov_unsigned_t crc32, struct gcov_summary *all_prg) gcov_unsigned_t crc32,
struct gcov_summary *all_prg __attribute__ ((unused)))
{ {
struct gcov_ctr_summary *cs_prg, *cs_tprg; struct gcov_ctr_summary *cs_prg, *cs_tprg;
unsigned t_ix; unsigned t_ix;
/* If application calls fork or exec multiple times, we end up storing
profile repeadely. We should not account this as multiple runs or
functions executed once may mistakely become cold. */
static int run_accounted = 0;
#if !GCOV_LOCKED #if !GCOV_LOCKED
/* summary for all instances of program. */ /* summary for all instances of program. */
struct gcov_ctr_summary *cs_all; struct gcov_ctr_summary *cs_all;
@ -718,7 +719,6 @@ gcov_exit_merge_summary (const struct gcov_info *gi_ptr, struct gcov_summary *pr
#endif #endif
} }
run_accounted = 1;
prg->checksum = crc32; prg->checksum = crc32;
return 0; return 0;
@ -817,6 +817,7 @@ gcov_exit (void)
/* Now merge each file. */ /* Now merge each file. */
for (gi_ptr = gcov_list; gi_ptr; gi_ptr = gi_ptr->next) for (gi_ptr = gcov_list; gi_ptr; gi_ptr = gi_ptr->next)
gcov_exit_dump_gcov (gi_ptr, &gf, crc32, &all_prg); gcov_exit_dump_gcov (gi_ptr, &gf, crc32, &all_prg);
run_accounted = 1;
if (gi_filename) if (gi_filename)
free (gi_filename); free (gi_filename);