https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115991
--- Comment #10 from Sergei Trofimovich <slyfox at gcc dot gnu.org> --- Slightly more type-sound program, still ICEs: typedef unsigned u32; int b(void); void f_l_u32(long, u32); void bug(void) { u32 hdr[3]; u32 offset = 0; for (;b();) { u32 _addr = offset; u32 _size = 4; u32 *_data = hdr; while (_size) { _size--; f_l_u32(_addr, *_data); _data++; _addr += 4; } offset += 4; } f_l_u32(offset, 0); }