https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121066
Bug ID: 121066 Summary: [GCOV] Strange coverage statistics logic about statement expressions and ternary operators Product: gcc Version: 16.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: gcov-profile Assignee: unassigned at gcc dot gnu.org Reporter: njuwy at smail dot nju.edu.cn Target Milestone: --- gcc version: gcc version 16.0.0 20250704 (experimental) (GCC) option: --coverage -std=c2x $ cat test.c #include <stdio.h> int main() { volatile int a = 0, b = 0; int result = (a = 1, a)+ ((b = 2, b) ?(a = 8, a) :(b = 4, b)); printf("a=%d,b=%d,result=%d\n",a,b,result); return 0; } output: a=8,b=2,result=16 $ cat test.c.gcov -: 1:#include <stdio.h> 1: 2:int main() { 1: 3: volatile int a = 0, b = 0; 2: 4: int result = (a = 1, a)+ 1: 5: ((b = 2, b) 2: 6: ?(a = 8, a) 1*: 7: :(b = 4, b)); 1: 8: printf("a=%d,b=%d,result=%d\n",a,b,result); 1: 9: return 0; -: 10:} coverage statistics of line 4,5,6 should be consistent, and line 7 was not executed.