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

--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
PRE does some of it via tail merge:
find_duplicates: <bb 7> duplicate of <bb 8>
find_duplicates: <bb 7> duplicate of <bb 9>
Removing basic block 8
Removing basic block 9

Obviously if you have more complex code it won't do it.
This an example where PRE does it:
int h(void);
int f(int a, int b, int c)
{
  if (a)
    return 2;
  h();
  if (b)
    return 2;
  h();
  if (c)
    return 2;
  h();
  return 4;
}

Reply via email to