GCC optimization bug?

anubhav anubhav@cse.iitb.ac.in
Tue Jan 17 10:15:00 GMT 2017


Hello,

The following code prints different results when run with different 
optimization levels (O0 vs O2).

int main() {
         int i = INT_MAX - 5;
         int j = 0;
         for (; i <= INT_MAX - 2; i += 3) {
                 if (i <= 1) {
                         j = 1;
                 }
         }
         printf("%d",j);
         return 0;
}

Commands used :
  gcc -O0 -fno-strict-overflow bug.c -o bug        # Output is 1
  gcc -O2 -fno-strict-overflow bug.c -o bug        # Output is 0

GCC version :
gcc version 6.2.0 20160901 (Ubuntu 6.2.0-3ubuntu11~16.04)

The expected output is 1 since the value of i overflows once. Is this 
an optimization bug?

Thanks and regards,
Anubhav



More information about the Gcc-help mailing list