https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121409
Jørgen Kvalsvik <j at lambda dot is> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |j at lambda dot is
--- Comment #1 from Jørgen Kvalsvik <j at lambda dot is> ---
I think this is a duplicate of PR121123. After applying my fix I cannot
reproduce.
$ cat test.c.gcov
-: 0:Source:test.c
-: 0:Graph:test.gcno
-: 0:Data:test.gcda
-: 0:Runs:1
-: 1:#include <stddef.h>
-: 2:#include <ctype.h>
-: 3:#include <stdlib.h>
-: 4:#include <stdio.h>
1: 5:int process_array(const int *data, size_t len, nullptr_t nptr)
-: 6:{
1: 7: int sum = 0;
1: 8: size_t i = 0;
3: 9: while (i < len) {
3: 10: char c = (char)(data[i] & 0xFF);
3: 11: if (nptr == nullptr && isdigit(c)) {
2: 12: sum += data[i] % 10;
2: 13: if (sum > 100) {
#####: 14: sum += 1;
-: 15: } else {
2: 16: sum += 2;
-: 17: }
-: 18: } else {
1: 19: sum -= (int)len;
1: 20: break;
-: 21: }
2*: 22: i += (sum & 1) ? 1 : 2;
-: 23: }
1: 24: return sum;
-: 25:}
1: 26:int main(void)
-: 27:{
1: 28: int arr[] = { 52, 65, 50, 53, 90 };
1: 29: nullptr_t nptr = nullptr;
1: 30: printf("%d\n", process_array(arr, 5, nptr));
1: 31: return EXIT_SUCCESS;
-: 32:}