/* PR debug/46387 */ /* { dg-do compile } */ /* { dg-options "-g -O2" } */ struct S { double x; double y; short z; }; int a = 0, b = 0, c; void bar (int, int, int); void baz (int *, int *, int *); void foo (struct S *v) { int x, y, z; if (!a && b != 0) return; if (v->z) baz (&x, &y, &z); else { x = v->x; y = v->y; } x = x / (5 + 1); y = y / (5 + 1); if (x < 0) x = 0; if (x > c - 1) x = c - 1; if (b == 0) bar (x, y, 1); return; }