diff mbox series

RISC-V: Correct and improve the "-mabi" documentation

Message ID 20171026164507.2631-1-palmer@dabbelt.com
State New
Headers show
Series RISC-V: Correct and improve the "-mabi" documentation | expand

Commit Message

Palmer Dabbelt Oct. 26, 2017, 4:45 p.m. UTC
The documentation for the "-mabi" argument on RISC-V was incorrect.  We
chose to treat this as a documentation bug rather than a code bug, and
to make the documentation match what GCC currently does.  In the
process, I also improved the documentation a bit.

Thanks to Alex Bradbury for finding the bug!

PR target/82717: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82717

gcc/ChangeLog

2017-10-26  Palmer Dabbelt  <palmer@dabbelt.com>

        PR target/82717
        * doc/invoke.texi (RISC-V) <-mabi>: Correct and improve.
---
 gcc/doc/invoke.texi | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

Comments

Palmer Dabbelt Oct. 27, 2017, 3:23 p.m. UTC | #1
Committed.

On Thu, 26 Oct 2017 09:45:07 PDT (-0700), Palmer Dabbelt wrote:
> The documentation for the "-mabi" argument on RISC-V was incorrect.  We
> chose to treat this as a documentation bug rather than a code bug, and
> to make the documentation match what GCC currently does.  In the
> process, I also improved the documentation a bit.
>
> Thanks to Alex Bradbury for finding the bug!
>
> PR target/82717: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82717
>
> gcc/ChangeLog
>
> 2017-10-26  Palmer Dabbelt  <palmer@dabbelt.com>
>
>         PR target/82717
>         * doc/invoke.texi (RISC-V) <-mabi>: Correct and improve.
> ---
>  gcc/doc/invoke.texi | 23 ++++++++++++++++++++---
>  1 file changed, 20 insertions(+), 3 deletions(-)
>
> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
> index 71b2445f70fd..d184e1d7b7d4 100644
> --- a/gcc/doc/invoke.texi
> +++ b/gcc/doc/invoke.texi
> @@ -21669,9 +21669,26 @@ When generating PIC code, allow the use of PLTs. Ignored for non-PIC.
>
>  @item -mabi=@var{ABI-string}
>  @opindex mabi
> -Specify integer and floating-point calling convention.  This defaults to the
> -natural calling convention: e.g.@ LP64 for RV64I, ILP32 for RV32I, LP64D for
> -RV64G.
> +@item -mabi=@var{ABI-string}
> +@opindex mabi
> +Specify integer and floating-point calling convention.  @var{ABI-string}
> +contains two parts: the size of integer types and the registers used for
> +floating-point types.  For example @samp{-march=rv64ifd -mabi=lp64d} means that
> +@samp{long} and pointers are 64-bit (implicitly defining @samp{int} to be
> +32-bit), and that floating-point values up to 64 bits wide are passed in F
> +registers.  Contrast this with @samp{-march=rv64ifd -mabi=lp64f}, which still
> +allows the compiler to generate code that uses the F and D extensions but only
> +allows floating-point values up to 32 bits long to be passed in registers; or
> +@samp{-march=rv64ifd -mabi=lp64}, in which no floating-point arguments will be
> +passed in registers.
> +
> +The default for this argument is system dependent, users who want a specific
> +calling convention should specify one explicitly.  The valid calling
> +conventions are: @samp{ilp32}, @samp{ilp32f}, @samp{ilp32d}, @samp{lp64},
> +@samp{lp64f}, and @samp{lp64d}.  Some calling conventions are impossible to
> +implement on some ISAs: for example, @samp{-march=rv32if -mabi=ilp32d} is
> +invalid because the ABI requires 64-bit values be passed in F registers, but F
> +registers are only 32 bits wide.
>
>  @item -mfdiv
>  @itemx -mno-fdiv
diff mbox series

Patch

diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 71b2445f70fd..d184e1d7b7d4 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -21669,9 +21669,26 @@  When generating PIC code, allow the use of PLTs. Ignored for non-PIC.
 
 @item -mabi=@var{ABI-string}
 @opindex mabi
-Specify integer and floating-point calling convention.  This defaults to the
-natural calling convention: e.g.@ LP64 for RV64I, ILP32 for RV32I, LP64D for
-RV64G.
+@item -mabi=@var{ABI-string}
+@opindex mabi
+Specify integer and floating-point calling convention.  @var{ABI-string}
+contains two parts: the size of integer types and the registers used for
+floating-point types.  For example @samp{-march=rv64ifd -mabi=lp64d} means that
+@samp{long} and pointers are 64-bit (implicitly defining @samp{int} to be
+32-bit), and that floating-point values up to 64 bits wide are passed in F
+registers.  Contrast this with @samp{-march=rv64ifd -mabi=lp64f}, which still
+allows the compiler to generate code that uses the F and D extensions but only
+allows floating-point values up to 32 bits long to be passed in registers; or
+@samp{-march=rv64ifd -mabi=lp64}, in which no floating-point arguments will be
+passed in registers.
+
+The default for this argument is system dependent, users who want a specific
+calling convention should specify one explicitly.  The valid calling
+conventions are: @samp{ilp32}, @samp{ilp32f}, @samp{ilp32d}, @samp{lp64},
+@samp{lp64f}, and @samp{lp64d}.  Some calling conventions are impossible to
+implement on some ISAs: for example, @samp{-march=rv32if -mabi=ilp32d} is
+invalid because the ABI requires 64-bit values be passed in F registers, but F
+registers are only 32 bits wide.
 
 @item -mfdiv
 @itemx -mno-fdiv