diff options
author | Alexandre Oliva <oliva@adacore.com> | 2020-10-22 02:32:04 -0300 |
---|---|---|
committer | Alexandre Oliva <oliva@gnu.org> | 2020-10-22 02:32:04 -0300 |
commit | f72d7f7c2cac61612a70d22e03cb95ed47f3a4d4 (patch) | |
tree | 12e90187d0ae60f1fab2f117dc0bf6b848841c12 /gcc | |
parent | 439407aa2c678a96bd5b430ab9c335e65beb5751 (diff) | |
download | gcc-f72d7f7c2cac61612a70d22e03cb95ed47f3a4d4.zip gcc-f72d7f7c2cac61612a70d22e03cb95ed47f3a4d4.tar.gz gcc-f72d7f7c2cac61612a70d22e03cb95ed47f3a4d4.tar.bz2 |
aarch64-* and ppc*-linux-gnu long long float/long double mismatch
Some platforms have failed to build because long long float is mapped
to double rather than long double, and then the attempts to import
intrinsics for long double in Aux_Long_Long_Float raise warnings
turned into errors.
This patch is a work around for the mismatch, arranging for
Aux_Long_Long_Float to map to Aux_Long_Float.
for gcc/ada/ChangeLog
* Makefile.rtl (LIBGNAT_TARGET_PAIRS): Use
a-nallfl__wraplf.ads on aarch64-* and ppc*-linux-gnu targets.
* libgnat/a-nallfl__wraplf.ads: New.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/Makefile.rtl | 6 | ||||
-rw-r--r-- | gcc/ada/libgnat/a-nallfl__wraplf.ads | 87 |
2 files changed, 93 insertions, 0 deletions
diff --git a/gcc/ada/Makefile.rtl b/gcc/ada/Makefile.rtl index 898eb5d..87ee3e9 100644 --- a/gcc/ada/Makefile.rtl +++ b/gcc/ada/Makefile.rtl @@ -1402,6 +1402,7 @@ ifeq ($(strip $(filter-out aarch64 arm% coff wrs vx%,$(target_cpu) $(target_vend VX=vxworks7 EH_MECHANISM=-gcc SIGTRAMP_OBJ=sigtramp-vxworks.o + LIBGNAT_TARGET_PAIRS += a-nallfl.ads<libgnat/a-nallfl__wraplf.ads else ifeq ($(strip $(filter-out arm%, $(target_cpu))),) ARCH_STR=arm @@ -1538,6 +1539,7 @@ endif ifeq ($(strip $(filter-out aarch64 %qnx,$(target_cpu) $(target_os))),) LIBGNAT_TARGET_PAIRS = \ a-intnam.ads<libgnarl/a-intnam__qnx.ads \ + a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \ s-inmaop.adb<libgnarl/s-inmaop__posix.adb \ s-intman.adb<libgnarl/s-intman__qnx.adb \ s-osinte.adb<libgnarl/s-osinte__qnx.adb \ @@ -1780,6 +1782,7 @@ endif ifeq ($(strip $(filter-out %aarch64 freebsd%,$(target_cpu) $(target_os))),) LIBGNAT_TARGET_PAIRS = \ a-intnam.ads<libgnarl/a-intnam__freebsd.ads \ + a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \ s-inmaop.adb<libgnarl/s-inmaop__posix.adb \ s-intman.adb<libgnarl/s-intman__posix.adb \ s-mudido.adb<libgnarl/s-mudido__affinity.adb \ @@ -2197,6 +2200,7 @@ ifeq ($(strip $(filter-out powerpc% linux%,$(target_cpu) $(target_os))),) a-exetim.adb<libgnarl/a-exetim__posix.adb \ a-exetim.ads<libgnarl/a-exetim__default.ads \ a-intnam.ads<libgnarl/a-intnam__linux.ads \ + a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \ a-synbar.adb<libgnarl/a-synbar__posix.adb \ a-synbar.ads<libgnarl/a-synbar__posix.ads \ s-inmaop.adb<libgnarl/s-inmaop__posix.adb \ @@ -2268,6 +2272,7 @@ ifeq ($(strip $(filter-out aarch64% linux%,$(target_cpu) $(target_os))),) a-exetim.adb<libgnarl/a-exetim__posix.adb \ a-exetim.ads<libgnarl/a-exetim__default.ads \ a-intnam.ads<libgnarl/a-intnam__linux.ads \ + a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \ a-synbar.adb<libgnarl/a-synbar__posix.adb \ a-synbar.ads<libgnarl/a-synbar__posix.ads \ s-inmaop.adb<libgnarl/s-inmaop__posix.adb \ @@ -2683,6 +2688,7 @@ ifeq ($(strip $(filter-out darwin%,$(target_os))),) ifeq ($(strip $(filter-out arm64 aarch64,$(target_cpu))),) LIBGNAT_TARGET_PAIRS += \ + a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \ s-intman.adb<libgnarl/s-intman__susv3.adb \ s-osprim.adb<libgnat/s-osprim__darwin.adb \ $(ATOMICS_TARGET_PAIRS) \ diff --git a/gcc/ada/libgnat/a-nallfl__wraplf.ads b/gcc/ada/libgnat/a-nallfl__wraplf.ads new file mode 100644 index 0000000..2d5c71d --- /dev/null +++ b/gcc/ada/libgnat/a-nallfl__wraplf.ads @@ -0,0 +1,87 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT RUN-TIME COMPONENTS -- +-- -- +-- A D A . N U M E R I C S . A U X . L O N G _ L O N G _ F L O A T -- +-- -- +-- S p e c -- +-- (Long Long Float Wrapper in terms of Long Float) -- +-- -- +-- Copyright (C) 1992-2020, Free Software Foundation, Inc. -- +-- -- +-- GNAT is free software; you can redistribute it and/or modify it under -- +-- terms of the GNU General Public License as published by the Free Soft- -- +-- ware Foundation; either version 3, or (at your option) any later ver- -- +-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- +-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- +-- or FITNESS FOR A PARTICULAR PURPOSE. -- +-- -- +-- As a special exception under Section 7 of GPL version 3, you are granted -- +-- additional permissions described in the GCC Runtime Library Exception, -- +-- version 3.1, as published by the Free Software Foundation. -- +-- -- +-- You should have received a copy of the GNU General Public License and -- +-- a copy of the GCC Runtime Library Exception along with this program; -- +-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- +-- <http://www.gnu.org/licenses/>. -- +-- -- +-- GNAT was originally developed by the GNAT team at New York University. -- +-- Extensive contributions were provided by Ada Core Technologies Inc. -- +-- -- +------------------------------------------------------------------------------ + +-- This package provides the basic computational interface for the +-- generic elementary functions. The functions in this unit are +-- wrappers for those in the Long Float package. + +with Ada.Numerics.Aux_Long_Float; + +package Ada.Numerics.Aux_Long_Long_Float is + pragma Pure; + + subtype T is Long_Long_Float; + package Aux renames Ada.Numerics.Aux_Long_Float; + subtype W is Aux.T; + + -- Use the Aux implementation. + + function Sin (X : T) return T + is (T (Aux.Sin (W (X)))); + + function Cos (X : T) return T + is (T (Aux.Cos (W (X)))); + + function Tan (X : T) return T + is (T (Aux.Tan (W (X)))); + + function Exp (X : T) return T + is (T (Aux.Exp (W (X)))); + + function Sqrt (X : T) return T + is (T (Aux.Sqrt (W (X)))); + + function Log (X : T) return T + is (T (Aux.Log (W (X)))); + + function Acos (X : T) return T + is (T (Aux.Acos (W (X)))); + + function Asin (X : T) return T + is (T (Aux.Asin (W (X)))); + + function Atan (X : T) return T + is (T (Aux.Atan (W (X)))); + + function Sinh (X : T) return T + is (T (Aux.Sinh (W (X)))); + + function Cosh (X : T) return T + is (T (Aux.Cosh (W (X)))); + + function Tanh (X : T) return T + is (T (Aux.Tanh (W (X)))); + + function Pow (X, Y : T) return T + is (T (Aux.Pow (W (X), W (Y)))); + +end Ada.Numerics.Aux_Long_Long_Float; |