docs: mention that clobbering output regs in inline asm is illegal.
authorPeter Zotov <whitequark@whitequark.org>
Tue, 30 Aug 2016 10:48:31 +0000 (10:48 +0000)
committerPeter Zotov <whitequark@whitequark.org>
Tue, 30 Aug 2016 10:48:31 +0000 (10:48 +0000)
I've found this out the hard way; LLVM will not normally catch this
error (unless -verify-machineinstrs is passed), and under certain
very specific circumstances (such as register scavenger running
under pressure) this would result in an opaque crash in codegen.

llvm-svn: 280071

llvm/docs/LangRef.rst

index 4f4d0cb..83573be 100644 (file)
@@ -3385,6 +3385,9 @@ constraints, e.g. "``~{eax}``". The one exception is that a clobber string of
 memory locations -- not only the memory pointed to by a declared indirect
 output.
 
+Note that clobbering named registers that are also present in output
+constraints is not legal.
+
 
 Constraint Codes
 """"""""""""""""