aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlexandre Oliva <oliva@adacore.com>2020-10-22 02:32:04 -0300
committerAlexandre Oliva <oliva@gnu.org>2020-10-22 02:32:04 -0300
commitf72d7f7c2cac61612a70d22e03cb95ed47f3a4d4 (patch)
tree12e90187d0ae60f1fab2f117dc0bf6b848841c12 /gcc
parent439407aa2c678a96bd5b430ab9c335e65beb5751 (diff)
downloadgcc-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.rtl6
-rw-r--r--gcc/ada/libgnat/a-nallfl__wraplf.ads87
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;