diff options
author | Georg-Johann Lay <avr@gjlay.de> | 2019-11-07 09:19:31 +0000 |
---|---|---|
committer | Georg-Johann Lay <gjl@gcc.gnu.org> | 2019-11-07 09:19:31 +0000 |
commit | 29f3def30844dd13e79972fa03a50af68120f7ac (patch) | |
tree | 270260e9909fa2a95f28ea376624c6c735ad5f73 /gcc/doc/install.texi | |
parent | 76bc24ff68284d90bc8d334b72c9690382747add (diff) |
Support 64-bit double and 64-bit long double configurations.
gcc/
Support 64-bit double and 64-bit long double configurations.
PR target/92055
* config.gcc (tm_defines) [avr]: Set from --with-double=,
--with-long-double=.
* config/avr/t-multilib: Remove.
* config/avr/t-avr: Output of genmultilib.awk is now fully
dynamically generated and no more part of the repo.
(HAVE_DOUBLE_MULTILIB, HAVE_LONG_DOUBLE_MULTILIB): New variables.
Pass them down to...
* config/avr/genmultilib.awk: ...here and handle them.
* gcc/config/avr/avr.opt (-mdouble=, avr_double). New option and var.
(-mlong-double=, avr_long_double). New option and var.
* common/config/avr/avr-common.c (opts.h, diagnostic.h): Include.
(TARGET_OPTION_OPTIMIZATION_TABLE) <-mdouble=, -mlong-double=>:
Set default as requested by --with-double=
(TARGET_HANDLE_OPTION): Define to this...
(avr_handle_option): ...new hook worker.
* config/avr/avr.h (DOUBLE_TYPE_SIZE): Define to avr_double.
(LONG_DOUBLE_TYPE_SIZE): Define to avr_long_double.
(avr_double_lib): New proto for spec function.
(EXTRA_SPEC_FUNCTIONS) <double-lib>: Add.
(DRIVER_SELF_SPECS): Call %:double-lib.
* config/avr/avr.c (avr_option_override): Assert
sizeof(long double) >= sizeof(double) for the target.
* config/avr/avr-c.c (avr_cpu_cpp_builtins)
[__HAVE_DOUBLE_MULTILIB__, __HAVE_LONG_DOUBLE_MULTILIB__]
[__HAVE_DOUBLE64__, __HAVE_DOUBLE32__, __DEFAULT_DOUBLE__=]
[__HAVE_LONG_DOUBLE64__, __HAVE_LONG_DOUBLE32__]
[__HAVE_LONG_DOUBLE_IS_DOUBLE__, __DEFAULT_LONG_DOUBLE__=]:
New built-in define depending on --with-double=, --with-long-double=.
* config/avr/driver-avr.c (avr_double_lib): New spec function.
* doc/invoke.tex (AVR Options) <-mdouble=,-mlong-double=>: Doc.
* doc/install.texi (Cross-Compiler-Specific Options)
<--with-double=, --with-long-double=>: Doc.
libgcc/
Support 64-bit double and 64-bit long double configurations.
PR target/92055
* config/avr/t-avr (HOST_LIBGCC2_CFLAGS): Only add -DF=SF if
long double is a 32-bit type.
* config/avr/t-avrlibc: Copy double64 and long-double64
multilib(s) from the vanilla one.
* config/avr/t-copy-libgcc: New Makefile snip.
From-SVN: r277908
Diffstat (limited to 'gcc/doc/install.texi')
-rw-r--r-- | gcc/doc/install.texi | 39 |
1 files changed, 36 insertions, 3 deletions
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 55ef4ca7f24..2cb8a342a2c 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -2276,16 +2276,49 @@ being used as the target C library. This causes @code{__eprintf} to be omitted from @file{libgcc.a} on the assumption that it will be provided by @samp{newlib}. +@html +<a name="avr"></a> +@end html @item --with-avrlibc -Specifies that @samp{AVR-Libc} is -being used as the target C library. This causes float support +Only supported for the AVR target. Specifies that @samp{AVR-Libc} is +being used as the target C@tie{} library. This causes float support functions like @code{__addsf3} to be omitted from @file{libgcc.a} on the assumption that it will be provided by @file{libm.a}. For more technical details, cf. @uref{http://gcc.gnu.org/PR54461,,PR54461}. -This option is only supported for the AVR target. It is not supported for +It is not supported for RTEMS configurations, which currently use newlib. The option is supported since version 4.7.2 and is the default in 4.8.0 and newer. +@item --with-double=@{32|64|32,64|64,32@} +@itemx --with-long-double=@{32|64|32,64|64,32|double@} +Only supported for the AVR target since version@tie{}10. +Specify the default layout available for the C/C++ @samp{double} +and @samp{long double} type, respectively. The following rules apply: +@itemize +@item +The first value after the @samp{=} specifies the default layout (in bits) +of the type and also the default for the @option{-mdouble=} resp. +@option{-mlong-double=} compiler option. +@item +If more than one value is specified, respective multilib variants are +available, and @option{-mdouble=} resp. @option{-mlong-double=} acts +as a multilib option. +@item +If @option{--with-long-double=double} is specified, @samp{double} and +@samp{long double} will have the same layout. +@item +If the configure option is not set, it defaults to @samp{32} which +is compatible with older versions of the compiler that use non-standard +32-bit types for @samp{double} and @samp{long double}. +@end itemize +Not all combinations of @option{--with-double=} and +@option{--with-long-double=} are valid. For example, the combination +@option{--with-double=32,64} @option{--with-long-double=32} will be +rejected because the first option specifies the availability of +multilibs for @samp{double}, whereas the second option implies +that @samp{long double} --- and hence also @samp{double} --- is always +32@tie{}bits wide. + @item --with-nds32-lib=@var{library} Specifies that @var{library} setting is used for building @file{libgcc.a}. Currently, the valid @var{library} is @samp{newlib} or @samp{mculib}. |