https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89752

--- Comment #10 from Wilco <wilco at gcc dot gnu.org> ---
It seems that rewriting "+rm" into "=rm" and "0" is not equivalent. Eg.

__asm__  ("" : [a0] "=m" (A0) : "0" (A0));

gives a million warnings "matching constraint does not allow a register", so
"0" appears to imply a register operand. Reload seems to deal with "=rm" and
"rm" or "=rm" and "0m", but a single "0" prefers a register and that's why it
tries to insert an incorrect BLK move.

Reply via email to