Back in May 2004 Richard Henderson ensured that using a '+' constraint in an extended asm statement would work with an 'm' constraint.
http://gcc.gnu.org/ml/gcc-patches/2004-05/msg00438.html Unfortunately he did not update the documentation. I verified that Richard's code is still in the compiler, and updated the documentation as follows. Bootstrapped on x86_64-unknown-linux-gnu. Committed to mainline. Ian 2012-10-23 Ian Lance Taylor <i...@google.com> * doc/extend.texi (Extended Asm): The '+' constraint does not require a register.
Index: doc/extend.texi =================================================================== --- doc/extend.texi (revision 192525) +++ doc/extend.texi (working copy) @@ -5864,10 +5864,7 @@ The ordinary output operands must be wri the values in these operands before the instruction are dead and need not be generated. Extended asm supports input-output or read-write operands. Use the constraint character @samp{+} to indicate such an -operand and list it with the output operands. You should only use -read-write operands when the constraints for the operand (or the -operand in which only some of the bits are to be changed) allow a -register. +operand and list it with the output operands. You may, as an alternative, logically split its function into two separate operands, one input operand and one write-only output