https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109903
--- Comment #4 from Dimitri Gorokhovik <dimitri.gorokhovik at free dot fr> --- Hi Andrew, I'd agree more with "WONTFIX" here ;-) We are not looking for solution. We want to spare the same hassle to others. This asm doesn't write to memory, it doesn't even read any -- 'a' is passed over in the registers with aarch64 and x64_86. It is also very hard to see the need for early clobber here ... how comes the version with return value doesn't need it while the other does? The asm performs regular register loads. Certainly we are not marking all register loads with early clobbers are we? WE ended up moving 'a' to output clause, it feels barely more contorted than the early-clobber method. > GCC does not look at the inline-asm template except while outputting the > assembly. Yep, reason why I let it emit ARMv8 insns for the x64_86 target ;-)