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

--- Comment #11 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Thinking about this some more, this is a not a hoisting problem but a sinking
problem.

basically we have:
int f(void);
int h(void);

int g(int a)
{
  if (a)
    return f() + 10;
  return h() + 10;
}

Which should be converted into:
int g1(int a)
{
  int t;
  if (a)
    t = f();
  else
    t = h();
  return t + 10;
}

We handle hoisting just fine; just not sinking common.

So we don't need reassoc in the original testcase if we do sinking.

Reply via email to