diff options
author | hp <hp@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-09-23 12:17:53 +0000 |
---|---|---|
committer | hp <hp@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-09-23 12:17:53 +0000 |
commit | 3d52d3059d783b8939e882ae1369314fb0a7f80d (patch) | |
tree | 56ebdba2b6bc8f32c6001ce4d254da31225d2b75 /gcc/doc/extend.texi | |
parent | 417e646b014743998818d252a93ab79846d60b56 (diff) | |
download | gcc-3d52d3059d783b8939e882ae1369314fb0a7f80d.tar.gz |
* doc/extend.texi (Extended Asm): Clarify that overlap between
asm-declared register variables used in an asm and the asm clobber
list is not allowed.
* stmt.c (decl_conflicts_with_clobbers_p): New function.
(expand_asm_operands): Keep track of clobbered registers. Call
decl_conflicts_with_clobbers_p for each input and output operand.
If no conflicts found before, also do conflict sanity check when
emitting clobbers.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57437 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/doc/extend.texi')
-rw-r--r-- | gcc/doc/extend.texi | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 68b306c4b79..9e121e4fc09 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -3700,7 +3700,10 @@ asm volatile ("movc3 %0,%1,%2" You may not write a clobber description in a way that overlaps with an input or output operand. For example, you may not have an operand describing a register class with one member if you mention that register -in the clobber list. There is no way for you to specify that an input +in the clobber list. Variables declared to live in specific registers +(@pxref{Explicit Reg Vars}), and used as asm input or output operands must +have no part mentioned in the clobber description. +There is no way for you to specify that an input operand is modified without also specifying it as an output operand. Note that if all the output operands you specify are for this purpose (and hence unused), you will then also need to specify |