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

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
Reduced testcase, we get x.aa == 1, but I don't understand how we should not
...

-O3 -fno-tree-dse -fno-tree-pre -fno-expensive-optimizations -fno-tree-sra
-fno-tree-loop-vectorize

typedef struct {
  float a;
  float aa;
} d;
int e[256], m, n;
void __attribute__((noipa)) f(int g, int h) {
  if (g != h)
    __builtin_abort ();
}
static void o(char p, char q, char r, short s, char t, short u, short v) {
  char w, *ag = &w;
  d x;
  int y = 1;
  long z = 1;
  x.a = x.aa = 1.0f;
  m = 3 - 1073741824 - 3;
  *ag = z = z - 2 * m;
  z = -186621953 ^ (z + 4);
  if (s)
  ac:
    if (-16385 == y)
      x.aa = *ag = 0;
  if (s)
    y = y - 8193;
  m = 2 - 350224399;
  if (w)
    goto ad;
  goto ae;
ad:
  x.a = 0 + x.a;
  x.aa = 0 + x.aa;
  goto ac;
ae:
  f(1, x.a);
  f(0, x.aa);
}
int main() {
  o(7, 2, 4, -1, -17, 16384, 1);
  return 0;
}

Reply via email to