https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115825
--- Comment #25 from Segher Boessenkool <segher at gcc dot gnu.org> --- No, darn does have a side effect: it returns a random number in the destination reg (_deliver_ _a_ _r_andom _n_umber). It does not touch memory at all. There are no call insns at all either, of course, so how is that code you show relevant at all? The most usual side effect is a store to memory, and that is way way way scarier than anything here. Treating things with a side effect as something that should hinder unrolling in any way is not very sensible.