Support 64-bit double and 64-bit long double configurations.
authorGeorg-Johann Lay <avr@gjlay.de>
Thu, 7 Nov 2019 09:19:31 +0000 (09:19 +0000)
committerGeorg-Johann Lay <gjl@gcc.gnu.org>
Thu, 7 Nov 2019 09:19:31 +0000 (09:19 +0000)
commit29f3def30844dd13e79972fa03a50af68120f7ac
tree270260e9909fa2a95f28ea376624c6c735ad5f73
parent76bc24ff68284d90bc8d334b72c9690382747add
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
18 files changed:
gcc/ChangeLog
gcc/common/config/avr/avr-common.c
gcc/config.gcc
gcc/config/avr/avr-c.c
gcc/config/avr/avr.c
gcc/config/avr/avr.h
gcc/config/avr/avr.opt
gcc/config/avr/driver-avr.c
gcc/config/avr/genmultilib.awk
gcc/config/avr/t-avr
gcc/config/avr/t-multilib [deleted file]
gcc/doc/install.texi
gcc/doc/invoke.texi
libgcc/ChangeLog
libgcc/config.host
libgcc/config/avr/t-avr
libgcc/config/avr/t-avrlibc
libgcc/config/avr/t-copy-libgcc [new file with mode: 0644]