https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81601

--- Comment #17 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Sure, for working on GIMPLE the code needs to be adjusted.  On the other side,
the advantage is that it will then be able to handle even cases that it
couldn't before.
Like right now it can handle:
struct S { int a:5; int b:3; int c:2; };
void bar (void);

void
foo (struct S s)
{
  if (s.a == 7 && s.b == 6 && s.c == 1)
    bar ();
}

but it could also handle

void
baz (struct S s)
{
  int a = s.a;
  int b = s.b;
  int c = s.c;
  if (a == 7 && b == 6 && c == 1)
    bar ();
}

As to where exactly to implement it, as part of which other pass or as a new
pass I'd like to defer to richi.

Reply via email to