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.