https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110043
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- More simplified testcase: ``` __int128 g_116_1; extern char g_521[][8]; void func_24() { if (g_116_1 >= 0) g_521[g_116_1][g_116_1] &= 0; } ``` I think this ICEs with types which >= sizeof(offset_int) Which is defined as: typedef FIXED_WIDE_INT (ADDR_MAX_PRECISION) offset_int; Which is basically says: The extra sign bit means that offset_int is effectively a signed 128-bit integer, i.e. it behaves like int128_t.