diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-04-06 20:33:21 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-04-06 20:33:21 +0000 |
commit | 0146470a52fec944e2111b7a0d827728a5b5516d (patch) | |
tree | b39cb541a0200bf03b36354d30b79f19e0ef68eb /gcc/coverage.c | |
parent | 03fd9d2c23681d6df303a29432b8c76fff8ae07c (diff) | |
download | gcc-0146470a52fec944e2111b7a0d827728a5b5516d.tar.gz |
PR profile/20815
PR profile/26399
* coverage.c (coverage_checksum_string): Reorganize loop to not read
after buffer.
* g++.dg/bprob/g++-bprob-2.C: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@112738 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/coverage.c')
-rw-r--r-- | gcc/coverage.c | 49 |
1 files changed, 25 insertions, 24 deletions
diff --git a/gcc/coverage.c b/gcc/coverage.c index 0ba0c110cbb..9d66e9e0589 100644 --- a/gcc/coverage.c +++ b/gcc/coverage.c @@ -457,30 +457,31 @@ coverage_checksum_string (unsigned chksum, const char *string) to be no better chance then walk all possible offsets looking for magicnuber. */ if (offset) - for (;string[offset]; offset++) - for (i = i + offset; string[i]; i++) - if (string[i]=='_') - { - int y; - - for (y = 1; y < 9; y++) - if (!(string[i + y] >= '0' && string[i + y] <= '9') - && !(string[i + y] >= 'A' && string[i + y] <= 'F')) - break; - if (y != 9 || string[i + 9] != '_') - continue; - for (y = 10; y < 18; y++) - if (!(string[i + y] >= '0' && string[i + y] <= '9') - && !(string[i + y] >= 'A' && string[i + y] <= 'F')) - break; - if (y != 18) - continue; - if (!dup) - string = dup = xstrdup (string); - for (y = 10; y < 18; y++) - dup[i + y] = '0'; - } - break; + { + for (i = i + offset; string[i]; i++) + if (string[i]=='_') + { + int y; + + for (y = 1; y < 9; y++) + if (!(string[i + y] >= '0' && string[i + y] <= '9') + && !(string[i + y] >= 'A' && string[i + y] <= 'F')) + break; + if (y != 9 || string[i + 9] != '_') + continue; + for (y = 10; y < 18; y++) + if (!(string[i + y] >= '0' && string[i + y] <= '9') + && !(string[i + y] >= 'A' && string[i + y] <= 'F')) + break; + if (y != 18) + continue; + if (!dup) + string = dup = xstrdup (string); + for (y = 10; y < 18; y++) + dup[i + y] = '0'; + } + break; + } } chksum = crc32_string (chksum, string); |