This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Ping^1 [patch][avr] PR92055: Add switches to enable 64-bit [long] double.


Ping #1

Am 31.10.19 um 22:55 schrieb Georg-Johann Lay:
Hi, this adds the possibility to enable IEEE compatible double
and long double support in avr-gcc.

It supports 2 configure options

--with-double={32|64|32,64|64,32}
--with-long-double={32|64|32,64|64,32|double}

which select the default layout of these types and also chose
which mutlilib variants are built and available.

These two config option map to the new compiler options
-mdouble= and -mlong-double= which are new multilib options.

The patch only deals with option handling and multilib bits,
it does not add any double functionality.  The double support
functions are supposed to be provided by avr-libc which also hosts
all the float stuff, including __addsf3 etc.

Ok for trunk?

Johann


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): Include.
     (diagnostic.h): Include.
     (TARGET_OPTION_OPTIMIZATION_TABLE) <-mdouble=>: Set default as
     requested by --with-double=.
    <-mlong-double=>: Set default as requested by --with-long-double=.
     (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 defined 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.

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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]