[Bug tree-optimization/81403] New: wrong code at -O3

babokin at gmail dot com gcc-bugzilla@gcc.gnu.org
Tue Jul 11 22:39:00 GMT 2017


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

            Bug ID: 81403
           Summary: wrong code at -O3
           Product: gcc
           Version: 8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: babokin at gmail dot com
  Target Milestone: ---

gcc rev250140, x86_64.

> cat f.cpp
#include <iostream>

short var_9 = 19581;
unsigned char var_33 = 21;
long int var_55 = 286697804684061197L;
long int var_59 = -1962393262513510540L;
long int var_71 = 4731868609112929952L;
long int var_773 = -4784633456247777769L;
short var_776 = 5894;
long int var_1321 = 7573221950916697355L;
unsigned char uc = 217;

void foo() {
  if (var_55)
    var_71 = 0;
  if (var_9 != ~(0 < uc))
    var_773 = 0;
  else
    var_776 = 1 / ~var_9 * -1;
  if (var_33)
    var_59 = ~var_9 & 10393;
  var_1321 = ~var_9;
}

int main() {
  foo();
  std::cout << "var_59 = " << var_59 << " (8320 expected)\n";

  return 0;
}

> g++ -w -O3 -o out f.cpp; ./out
var_59 = -19582 (8320 expected)
> g++ -w -O2 -o out f.cpp; ./out
var_59 = 8320 (8320 expected)
> g++ -w -O0 -o out f.cpp; ./out
var_59 = 8320 (8320 expected)


More information about the Gcc-bugs mailing list