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

--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Seems to work fine even if the dead returns_twice call is found later, e.g. on
int a;
void foo (void);
__attribute__ ((returns_twice)) int bar (void);
void baz (int, int);

static inline void
inl (int x)
{
  while (x)
    foo ();
}

void
qux (void)
{
  inl (1);
  baz (bar (), a);
}

it simplifies the GIMPLE IL in einline (and further in ethread), in the end
generates in this case the same assembly, because we don't have those edges in
RTL and so RTL optimizations cure it.  But the abnormal SSA_NAMEs etc. could
get in the way of quite a few optimizations.

Reply via email to