summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpalmer <palmer@138bc75d-0d04-0410-961f-82ee72b054a4>2017-10-27 15:22:43 +0000
committerpalmer <palmer@138bc75d-0d04-0410-961f-82ee72b054a4>2017-10-27 15:22:43 +0000
commit6b073ae6730df586f8ee349d83b8ed0c96be63f8 (patch)
tree974113926eccd512fe676cd667fb43e905e99250
parent41057e20e300b5965f5855f4a8b0136a89253b5f (diff)
downloadgcc-6b073ae6730df586f8ee349d83b8ed0c96be63f8.tar.gz
RISC-V: Correct and improve the "-mabi" documentation
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-27 Palmer Dabbelt <palmer@dabbelt.com> PR target/82717 * doc/invoke.texi (RISC-V) <-mabi>: Correct and improve. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@254153 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/doc/invoke.texi23
2 files changed, 25 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bf87fafca14..68d5943e90b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2017-10-27 Palmer Dabbelt <palmer@dabbelt.com>
+
+ PR target/82717
+ * doc/invoke.texi (RISC-V) <-mabi>: Correct and improve.
+
2017-10-27 Jan Hubicka <hubicka@ucw.cz>
* config/i386/x86-tune.def (X86_TUNE_PARTIAL_REG_DEPENDENCY,
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 91b05402ecc..0474cee0487 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -21705,9 +21705,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