http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19831
--- Comment #8 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-09-07 15:04:17 UTC --- Hm, and for invalid code like int main() { int *p = __builtin_malloc (sizeof (int) * 4); *p++ = 4; *p++ = 8; __builtin_free (p); return 0; } we shouldn't ICE either ... but here the idea wouldn't work (malloc is not marked necessary but free doesn't match up with it either).