http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58346
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- I wonder what struct U {}; static struct U b[6]; int foo (struct U *p, struct U *q) { return q - p; } int main() { return foo (&b[0], &b[4]); } is expected to do. It raises a division by zero exception at runtime (that's definitely a FE bug). That's either wrong-code or the same issue (not valid GNU C).