On Wed, May 27, 2020 at 10:57:53AM +0200, Martin Jambor wrote: > Hi, > > On Tue, May 26 2020, Miroslav Benes wrote: > > On Tue, 26 May 2020, Josh Poimboeuf wrote: > > > >> On Mon, May 25, 2020 at 01:07:27PM +0200, Miroslav Benes wrote: > >> > > I'll try to find out which optimization does this, because it is a > >> > > slightly different scenario than hiding __noreturn from the callees. > >> > > Probably -fno-ipa-pure-const again. > >> > > >> > And it is indeed -fno-ipa-pure-const again. > >> > >> It still seems odd to me that GCC's dead end detection seems to break > >> with -fno-ipa-pure-const. Do you know if these issues can be fixed on > >> the GCC side? > > > > It is odd. I asked Martin and Martin about that yesterday (CCed). It could > > be possible to enable just noreturn propagation for -flive-patching if I > > understood correctly. The attribute would need to be preserved in a > > patched function then, but that should be manageable. > > > > Marking functions as __noreturn is one thing (I think it is useful on its > > own as mentioned in the older thread about -flive-patching), but > > __always_inline solution in this case is really arbitrary. > > Noreturn functions generally tend to be very cold ones and so you do not > really want to inline them. The issue here is that with -fno-ipa-pure-const, GCC no longer automatically detects that the static inline function is noreturn, so it emits unreachable instructions after a call to it. -- Josh