Hi guys,

 
we have faced an error while using the gcov tool.

We have the following C-code:



    LC_TD_DINT caseSelector;

    caseSelector = LC_this->LC_VD_X;

    if 
((caseSelector==(LC_TD_DINT)1L)||(caseSelector==(LC_TD_DINT)2L)||((caseSelector>=(LC_TD_DINT)33L)
 && (caseSelector<=(LC_TD_DINT)44L)))

    {

      LC_this->LC_VD_X = (LC_TD_INT)3;

      if ((LC_TD_BOOL)(LC_this->LC_VD_INPUT_VAR == (LC_TD_INT)2))

      {

        LC_this->LC_VD_Y = (LC_TD_INT)666;

      }

    }

    else

    {

      LC_this->LC_VD_X = (LC_TD_INT)4;

    }

 
 
 
 
 
When we use gcov (with options –bcfu) we got the following result (in the 
c.gcov file):

 
 
-:   19:    LC_TD_DINT caseSelector;

        1:   20:    caseSelector = LC_this->LC_VD_X;

        1:   21:    if 
((caseSelector==(LC_TD_DINT)1L)||(caseSelector==(LC_TD_DINT)2L)||((caseSelector>=(LC_TD_DINT)33L)
 && (caseSelector<=(LC_TD_DINT)44L)))

branch  0 taken 1 (fallthrough)

branch  1 taken 0

branch  2 taken 0 (fallthrough)

branch  3 taken 1

branch  4 never executed

branch  5 never executed

branch  6 never executed

branch  7 never executed

        -:   22:    {

        1:   23:      LC_this->LC_VD_X = (LC_TD_INT)3;

        2:   24:      if ((LC_TD_BOOL)(LC_this->LC_VD_INPUT_VAR == 
(LC_TD_INT)2))

branch  0 taken 1 (fallthrough)

branch  1 taken 0

unconditional  2 taken 1

        -:   25:      {

        1:   26:        LC_this->LC_VD_Y = (LC_TD_INT)666;

unconditional  0 taken 1

        -:   27:      }

        -:   28:    }

        -:   29:    else

        -:   30:    {

    #####:   31:      LC_this->LC_VD_X = (LC_TD_INT)4;

unconditional  0 never executed

        -:   32:    }

 
 
 
 
 
When you look at line 23 it is called 1 time. Line 24 is called 2 times (the 
bold one).
We already looked in the disassembly but did not see a reason why the line 
should be executed 2 times.

Can anyone help here, please?

Kind regards,
Alex



 

Reply via email to