Ouch, good catch. It should be actually very simple to fix it, just markYes, but as Sean points out, that will negatively affect code-gen on the
"value" as an "early clobber" output:
: ASM_CALL_CONSTRAINT, "=&r"(value) : "r"(field) : "cc");
That's an output which is written before the instruction is finished using
the input operands. The manual even says "this operand may not lie in a
register that is read by the instruction or as part of any memory address",
which is exactly what you caught with %1 and %2 both being the same GPR.
happy path. But perhaps that's acceptable if we add the asm-goto-output
variant?