https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64524

            Bug ID: 64524
           Summary: gcc can't detect same expression in both parts of
                    ternary operator
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dcb314 at hotmail dot com

Given this source code

extern void g(int);

void
f( int n)
{
    int i = (n >= 10) ? 1 : 1;

    g( i - 1);
}

then trunk gcc says nothing:

$ ~/gcc/results/bin/gcc -c -O2 -Wall -Wextra jan6c.cc
$ 

Here is cppcheck detecting the problem:

$ ~/cppcheck/trunk/cppcheck --enable=all jan6c.cc 
Checking jan6c.cc...
[jan6c.cc:9]: (style) Same expression in both branches of ternary operator.
$ 

Fixing this bug would find about a dozen bugs in Linux kernel
and about 100 bugs in Fedora Linux.

Reply via email to