[Bug middle-end/90796] [8/9/10 Regression] GCC: O2 vs O3 output differs on simple test

marxin at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Jun 10 08:05:00 GMT 2019


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

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |marxin at gcc dot gnu.org,
                   |                            |matz at gcc dot gnu.org,
                   |                            |rguenth at gcc dot gnu.org
      Known to work|                            |7.4.0
   Target Milestone|---                         |8.4
      Known to fail|                            |10.0, 8.3.0, 9.1.0

--- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> ---
Yes, it started with r255467.
There's a simplified test-case:

$ cat pr90796.c
unsigned b[11];
unsigned c;
int d, e, f;
char en;

int main() {
  char b[100];
  for (; e < 6; e += 3) {
    __builtin_sprintf(b, "%u", b[0]);
    for (; c < 9; c++)
      for (d = 2; d < 11; d++) {
        f = b[c + 2] ^ 9;
        b[c] = f;
      }
  }
  __builtin_printf("b:%s\n", b);
  if (__builtin_strcmp (b, "9") != 0)
    __builtin_abort ();
  return 0;
}

$ gcc pr90796.c -O3 && ./a.out
b:0
Aborted (core dumped)


More information about the Gcc-bugs mailing list