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:}

Reply via email to