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.

Reply via email to