The "single" value profiler (gen_one_value_profiler) can emit values that gcov-io doesn't like to see, namely negative values, per this check in gcov_read_counter:
if (value < 0) gcov_var.error = -1; Testcase: [brat1]$ cat a.i # 1 "a.c" # 1 "<built-in>" # 1 "<command line>" # 1 "a.c" int j = 1<<31; main () { int i; for (i = 0; i< 10000000; i++) if (! (i % j)) return; } Steps to reproduce. There is a compile step and a run step since this is feedback optimization. [brat1]$ rm -f a.gcda [brat1]$ xgcc-3.4.3 -v -save-temps a.c --profile-generate Reading specs from /u/nomura/dl/gcc-3.4.3_linux/gcc/specs Configured with: ../gcc-3.4.3/configure --enable-languages=c,c++ Thread model: posix gcc version 3.4.3 /u/nomura/dl/gcc-3.4.3_linux/gcc/cc1 -E -quiet -v -iprefix /u/nomura/dl/gcc-3.4.3_linux/gcc/../lib/gcc/i686-pc-linux-gnu/3.4.3/ -isystem /u/nomura/dl/gcc-3.4.3_linux/gcc/include a.c -mtune=pentiumpro -fprofile-generate -o a.i ignoring nonexistent directory "/u/nomura/dl/gcc-3.4.3_linux/gcc/../lib/gcc/i686-pc-linux-gnu/3.4.3/include" ignoring nonexistent directory "/u/nomura/dl/gcc-3.4.3_linux/gcc/../lib/gcc/i686-pc-linux-gnu/3.4.3/../../../../i686-pc-linux-gnu/include" ignoring nonexistent directory "NONE/include" ignoring nonexistent directory "/usr/local/lib/gcc/i686-pc-linux-gnu/3.4.3/include" #include "..." search starts here: #include <...> search starts here: /u/nomura/dl/gcc-3.4.3_linux/gcc/include /usr/local/include /usr/local/lib/../i686-pc-linux-gnu/include /usr/include End of search list. /u/nomura/dl/gcc-3.4.3_linux/gcc/cc1 -fpreprocessed a.i -quiet -dumpbase a.c -mtune=pentiumpro -auxbase a -version -fprofile-generate -o a.s GNU C version 3.4.3 (i686-pc-linux-gnu) compiled by GNU C version 3.2 20020903 (Red Hat Linux 8.0 3.2-7). GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 as -V -Qy -o a.o a.s GNU assembler version 2.13.90.0.2 (i386-redhat-linux) using BFD version 2.13.90.0.2 20020802 /u/nomura/dl/gcc-3.4.3_linux/gcc/collect2 --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o /u/nomura/dl/gcc-3.4.3_linux/gcc/crtbegin.o -L/u/nomura/dl/gcc-3.4.3_linux/gcc -L/usr/local/lib a.o -lgcov -lgcc -lgcc_eh -lc -lgcc -lgcc_eh /u/nomura/dl/gcc-3.4.3_linux/gcc/crtend.o /usr/lib/crtn.o [brat1]$ a.out profiling:/u/nomura/tools/pbo/value_profiling/a.gcda:Overflow writing [brat1]$ gcov-io is choking on the negative value which the value profiler tracks in its histogram. Here's another way to see that: [brat1]$ ~/dl/gcc-3.4.2_linux/gcc/gcov-dump -l a.gcda a.gcda:data:magic `gcda':version `304*' a.gcda:stamp 1797859630 a.gcda: 01000000: 2:FUNCTION ident=3, checksum=0x92e25e42 a.gcda: 01a10000: 6:COUNTERS arcs 3 counts a.gcda: 0 1 0 0 a.gcda: 01a70000: 6:COUNTERS single 3 counts a.gcda: 0 -2147483648 1 1 a.gcda:counter overflow at 23 a.gcda:early end of file [brat1]$ -- Summary: value profiling gets "Overflow writing" Product: gcc Version: 3.4.3 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: nomura at netapp dot com CC: gcc-bugs at gcc dot gnu dot org GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20310