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

            Bug ID: 66329
           Summary: If condition evaluated wrongly for "y&1 == 0"
                    condition
           Product: gcc
           Version: 4.8.3
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: shimple0 at yahoo dot com
  Target Milestone: ---

Created attachment 35649
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=35649&action=edit
test code of sample runs

gcc (GCC) 4.8.3
Target: x86_64-pc-cygwin

$ g++ gcc-bug.cpp
$ ./a.exe
3
y:3, y&1=1
Testing with 'if (y&1 == 0)'
y&1 != 0
Testing with 'if (y&1 == 1)'
y&1 == 1

$ ./a.exe
2
y:2, y&1=0
Testing with 'if (y&1 == 0)'
y&1 != 0
Testing with 'if (y&1 == 1)'
y&1 != 1

Haven't tested it for other data types than int, unsigned int.
Haven't tested it with gcc, but this bug could be there as well.

Reply via email to