https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84572
Bug ID: 84572
Summary: Wrong number of execution of a line
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: gcov-profile
Assignee: unassigned at gcc dot gnu.org
Reporter: marxin at gcc dot gnu.org
CC: marxin at gcc dot gnu.org
Target Milestone: ---
Following test-case:
$ cat gcovbug.c
#include <stdio.h>
#include <stdint.h>
#define LCCG_StructAttrib RT_CC_STRUCT_ATTRIB
#define RT_CC_STRUCT_ATTRIB
typedef uint8_t RT_TD_IEC_BOOL;
typedef int8_t RT_TD_IEC_SINT;
typedef int16_t RT_TD_IEC_INT;
typedef int32_t RT_TD_IEC_DINT;
typedef int64_t RT_TD_IEC_LINT;
typedef RT_TD_IEC_BOOL LC_TD_BOOL;
typedef RT_TD_IEC_SINT LC_TD_SINT;
typedef RT_TD_IEC_INT LC_TD_INT;
typedef RT_TD_IEC_DINT LC_TD_DINT;
typedef RT_TD_IEC_LINT LC_TD_LINT;
/* Typedefs */
typedef struct _LC_TD_FunctionBlock_COVERAGE
{
LC_TD_INT LC_VD_INPUT_VAR;
LC_TD_BOOL LC_VD_ENO;
LC_TD_INT LC_VD_X;
LC_TD_INT LC_VD_Y;
} LCCG_StructAttrib LC_TD_FunctionBlock_COVERAGE;
void lcfu___COVERAGE(LC_TD_FunctionBlock_COVERAGE* LC_this);
int main(void)
{
LC_TD_FunctionBlock_COVERAGE test;
test.LC_VD_INPUT_VAR = 2;
test.LC_VD_ENO = 0;
test.LC_VD_X = 0;
test.LC_VD_Y = 0;
lcfu___COVERAGE(&test);
return 0;
}
void lcfu___COVERAGE(LC_TD_FunctionBlock_COVERAGE* LC_this)
{
{
LC_TD_DINT caseSelector;
caseSelector = LC_this->LC_VD_INPUT_VAR;
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;
}
}
}
has following coverage:
1: 44:void lcfu___COVERAGE(LC_TD_FunctionBlock_COVERAGE* LC_this)
-: 45:{
-: 46: {
-: 47: LC_TD_DINT caseSelector;
1: 48: caseSelector = LC_this->LC_VD_INPUT_VAR;
-: 49:
1*: 50: if
((caseSelector==(LC_TD_DINT)1L)||(caseSelector==(LC_TD_DINT)2L)||((caseSelector>=(LC_TD_DINT)33L)
&& (caseSelector<=(LC_TD_DINT)44L)))
-: 51: {
1: 52: LC_this->LC_VD_X = (LC_TD_INT)3;
2: 53: if ((LC_TD_BOOL)(LC_this->LC_VD_INPUT_VAR ==
(LC_TD_INT)2))
-: 54: {
1: 55: LC_this->LC_VD_Y = (LC_TD_INT)666;
-: 56: }
-: 57: }
-: 58: else
-: 59: {
#####: 60: LC_this->LC_VD_X = (LC_TD_INT)4;
-: 61: }
-: 62: }