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

            Bug ID: 98250
           Summary: Wrong code path with -O1 and signed overflow
           Product: gcc
           Version: 10.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: stransky.peter at googlemail dot com
  Target Milestone: ---

Wrong code path after signed overflow in gcc-10 and optimization > O1.
Problem seems to be introduced somewhere between gcc-6 and gcc-8.


#include <stdio.h>

void foo(int n) {
    if (n > 0) 
    {
        ++n;
        printf("n=%d\n", n);

        if(n > 0) {
            printf("Should not get here.\n");
        }
    }
}

int main() {
    foo(0x7fffffff);

    return 0;
}

g++ issue.cc -o issue && ./issue
n=-2147483648

g++ issue.cc -o issue -O1 && ./issue
n=-2147483648
Should not get here.

Reply via email to