https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71153
--- Comment #4 from dhowells at redhat dot com <dhowells at redhat dot com> --- That looks better here: 000000000000007c <bar_clear_bit_unlock>: 7c: d2a00801 mov x1, #0x400000 // #4194304 80: f8611001 ldclrl x1, x1, [x0] 84: d65f03c0 ret But foo_clear_bit_unlock() still contains the double MVN instructions. From the patch you posted, I take it that only affects constant integer parameters.