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]

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


On 10/31/19 3:55 PM, Georg-Johann Lay wrote:
> 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.
> 
OK
jeff


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