https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69161
--- Comment #11 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to ktkachov from comment #10) > Sorry. Of course you meant "int *". That still ICEs: > char a; > int b, c, d, e; > > void > foo (void) > { > int f; > for (f = 0; f <= 4; f++) > { > for (d = 0; d < 20; d++) > { > int *g = &c; > b &= (0 != g) > e; > } > e &= a; > } > } And __INTPTR_TYPE__ g = (__INTPTR_TYPE__) &g; ? Because the version with long isn't portable.