https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113408
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Slightly adjusted: struct A { _BitInt(713) b; } g; int f; void foo (void) { struct A j = g; if (j.b) f = 0; } The problem is that SRA decides to change: j = g; _1 = j.b; if (_1 != 0) to j_7 = MEM[(struct A *)&g]; _1 = VIEW_CONVERT_EXPR<_BitInt(713)>(j_7); if (_1 != 0) where j_7 has _BitInt(768) type, and handle_cast doesn't seem to handle that. So, we need to handle it there, and ideally also tweak SRA so that it keeps the bitints as is even if they don't have precision in multiple of bytes or words or whatever SRA rounds to.