]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
extend.texi: Document how GCC estimates and relies on the size of an asm.
authorRichard Earnshaw <rearnsha@arm.com>
Sat, 4 Oct 2003 10:18:33 +0000 (10:18 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Sat, 4 Oct 2003 10:18:33 +0000 (10:18 +0000)
* doc/extend.texi: Document how GCC estimates and relies on the size
of an asm.

From-SVN: r72089

gcc/ChangeLog
gcc/doc/extend.texi

index 187375d2b8399a610b3569e547b23647d30b898d..ebc9864beff46198ae0ffd538746adf4463b6ce4 100644 (file)
@@ -1,3 +1,8 @@
+2003-10-04  Richard Earnshaw  <reanrsha@arm.com>
+
+       * doc/extend.texi: Document how GCC estimates and relies on the size
+       of an asm.
+
 2003-10-04  Richard Sandiford  <rsandifo@redhat.com>
 
        * config/mips/mips.c (mips_pad_arg_upward): Pad floating-point
index ce3171388b4b152153d80d8ffdacfaf93fd9e7a6..36fbd2653bad62a7e6d2f8f5f956e5ae6be469ee 100644 (file)
@@ -4136,6 +4136,26 @@ If you are writing a header file that should be includable in ISO C
 programs, write @code{__asm__} instead of @code{asm}.  @xref{Alternate
 Keywords}.
 
+@subsection Size of an @code{asm}
+
+Some targets require that GCC track the size of each instruction used in
+order to generate correct code.  Because the final length of an
+@code{asm} is only known by the assembler, GCC must make an estimate as
+to how big it will be.  The estimate is formed by counting the number of
+statements in the pattern of the @code{asm} and multiplying that by the
+length of the longest instruction on that processor.  Statements in the
+@code{asm} are identified by newline characters and whatever statement
+separator characters are supported by the assembler; on most processors
+this is the `@code{;}' character.
+
+Normally, GCC's estimate is perfectly adequate to ensure that correct
+code is generated, but it is possible to confuse the compiler if you use
+pseudo instructions or assembler macros that expand into multiple real
+instructions or if you use assembler directives that expand to more
+space in the object file than would be needed for a single instruction.
+If this happens then the assembler will produce a diagnostic saying that
+a label is unreachable.
+
 @subsection i386 floating point asm operands
 
 There are several rules on the usage of stack-like regs in