On Sat, Jan 18, 2025, 10:46 PM Andi Kleen <a...@firstfloor.org> wrote:

> From: Andi Kleen <a...@gcc.gnu.org>
>
> Correct the description of inline assembler to say that gcc does
> limited assembler parsing to estimate the length of inline assembler
> statements, and document that certain assembler primitives can confuse
> it.
>
> gcc/ChangeLog:
>
>         * doc/extend.texi: Document assembler parsing heuristics.
> ---
>  gcc/doc/extend.texi | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
> index b0bb0d47230..4c7c9120863 100644
> --- a/gcc/doc/extend.texi
> +++ b/gcc/doc/extend.texi
> @@ -10911,9 +10911,16 @@ of an asm}).
>  @item AssemblerInstructions
>  This is a literal string that specifies the assembler code. The string
> can
>  contain any instructions recognized by the assembler, including
> directives.
> -GCC does not parse the assembler instructions themselves and
> +
> +GCC only does minimal parsing of the assembler instructions to determine
> +how many there are for an conservative estimate of the maximum size of
> +the assembler statement for some optimizations, but otherwise
>  does not know what they mean or even whether they are valid assembler
> input.



This is already described in details in size of an asm section:
https://gcc.gnu.org/onlinedocs/gcc/Size-of-an-asm.html

Maybe just a link to that section is needed here.


>
> +Assembler primitives that change the number of instructions like
> @code{.rept} or
> +expanding @code{.macro} macros might confuse these heuristics and should
> +be avoided inside functions. For top level assembler they are generally
> fine.
> +
>  You may place multiple assembler instructions together in a single
> @code{asm}
>  string, separated by the characters normally used in assembly code for the
>  system. A combination that works in most places is a newline to break the
> --
> 2.47.1
>
>

Reply via email to