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

--- Comment #5 from Alex Bradbury <asb at lowrisc dot org> ---
(In reply to palmer from comment #4)

> """
> @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 "-march=rv64ifd -mabi=lp64d" means that
> "long" and pointers are 64-bit (implicitly defining "int" to be 32-bit), and
> that floating-point values up to 64 bits wide are passed in F registers. 
> Contrast this with "-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
> "-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: ilp32, ilp32f, ilp32d, lp64, lp64f, and lp64d.  Some
> calling conventions are impossible to implement on some ISAs: for example,
> "-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.
> """

Looks great to me!

Reply via email to