$ gcc -v gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/8/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 8-20170923-1ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,c++,go,brig,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 8.0.0 20170923 (experimental) [trunk revision 253118] (Ubuntu 8-20170923-1ubuntu2) $ cat small.c void main() { int a = 0; int b = 0; int c = 0; for (; a >= 0; a--) { (c && b, 1) && b; } } $ gcc -w --coverage small.c; ./a.out; gcov-8 small.c; cat small.c.gcov File 'small.c' Lines executed:100.00% of 7 Creating 'small.c.gcov' -: 0:Source:small.c -: 0:Graph:small.gcno -: 0:Data:small.gcda -: 0:Runs:1 -: 0:Programs:1 1: 1:void main() { 1: 2: int a = 0; 1: 3: int b = 0; 1: 4: int c = 0; 2: 5: for (; a >= 0; a--) { 2: 6: (c && b, 1) && b; -: 7: } 1: 8:} Line #6 is wrongly marked as executed twice.
(In reply to Yibiao Yang from comment #0) > $ gcc -v > gcc -v > Using built-in specs. > COLLECT_GCC=gcc > COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/8/lto-wrapper > OFFLOAD_TARGET_NAMES=nvptx-none > OFFLOAD_TARGET_DEFAULT=1 > Target: x86_64-linux-gnu > Configured with: ../src/configure -v --with-pkgversion='Ubuntu > 8-20170923-1ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs > --enable-languages=c,c++,go,brig,fortran,objc,obj-c++ --prefix=/usr > --with-gcc-major-version-only --program-suffix=-8 > --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id > --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix > --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu > --enable-libstdcxx-debug --enable-libstdcxx-time=yes > --with-default-libstdcxx-abi=new --enable-gnu-unique-object > --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie > --with-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror > --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 > --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none > --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu > --target=x86_64-linux-gnu > Thread model: posix > gcc version 8.0.0 20170923 (experimental) [trunk revision 253118] (Ubuntu > 8-20170923-1ubuntu2) > > $ cat small.c > void main() { > int a = 0; > int b = 0; > int c = 0; > for (; a >= 0; a--) { > (c && b, 1) && b; > } > } > > $ gcc -w --coverage small.c; ./a.out; gcov-8 small.c; cat small.c.gcov > File 'small.c' > Lines executed:100.00% of 7 > Creating 'small.c.gcov' > > -: 0:Source:small.c > -: 0:Graph:small.gcno > -: 0:Data:small.gcda > -: 0:Runs:1 > -: 0:Programs:1 > 1: 1:void main() { > 1: 2: int a = 0; > 1: 3: int b = 0; > 1: 4: int c = 0; > 2: 5: for (; a >= 0; a--) { > 2: 6: (c && b, 1) && b; I am not sure this is a duplication of bug 85163. When changing the operators in the code of bug 85163, the result is correct. While changing '&&' to '||' of the code here, the problem is still exist. > -: 7: } > 1: 8:} > > > Line #6 is wrongly marked as executed twice.
@marxin Is this a real bug? or this bug is only default behavior?
(In reply to Yibiao Yang from comment #2) > @marxin Is this a real bug? or this bug is only default behavior? I have to take a look. I'm planning to return to it in summer in batch.
Confirmed, but low priority.
GCC 9.1 has been released.
GCC 9.2 has been released.
GCC 9.3.0 has been released, adjusting target milestone.
Hi Jakub/Martin, In gcc version 7.4.0, The line #6 is marked as '-'. can you please confirm the gcc behaviour.
GCC 9.4 is being released, retargeting bugs to GCC 9.5.
&& does not mean logical AND in gcc, it's a label. You should just be using &