http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46387
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> 2010-11-09 13:19:45 UTC --- Reduced testcase: 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; } Looking into it.