diff --git a/llvm/docs/LangRef.rst b/llvm/docs/LangRef.rst index 06c5f433f6a5..be4b1d8a166d 100644 --- a/llvm/docs/LangRef.rst +++ b/llvm/docs/LangRef.rst @@ -5760,10 +5760,13 @@ Clobber constraints A clobber constraint is indicated by a "``~``" prefix. A clobber does not consume an input operand, nor generate an output. Clobbers cannot use any of the general constraint code letters -- they may use only explicit register -constraints, e.g., "``~{eax}``". The one exception is that a clobber string of -"``~{memory}``" indicates that the assembly writes to arbitrary undeclared -memory locations -- not only the memory pointed to by a declared indirect -output. +constraints, e.g., "``~{eax}``". + +The one exception is that a clobber string of "``~{memory}``" indicates that the +assembly reads and writes to arbitrary undeclared memory locations -- not only +the memory pointed to by a declared indirect output. Furthermore, the assembly +may also cause synchronization with other threads, such as via release/acquire +fences and atomic memory accesses. Note that clobbering named registers that are also present in output constraints is not legal.