https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107631
Iain Sandoe <iains at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed| |2022-12-20
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
--- Comment #2 from Iain Sandoe <iains at gcc dot gnu.org> ---
as discussed on irc, these functions do no exist on Darwin (and the
significand* set will likely be missing on several other targets).
Posix has obsoleted scalb* which should be replaced with scalbn*
===
I hacked the implementation thus:
(with this, on x86_64 darwin, we have 11k passes and 33 fails)
[PATCH] gm2: hack the builtins for scalb and significand
---
gcc/m2/gm2-libs/Builtins.mod | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/gcc/m2/gm2-libs/Builtins.mod b/gcc/m2/gm2-libs/Builtins.mod
index c679259dc3c..f4d4ded06b1 100644
--- a/gcc/m2/gm2-libs/Builtins.mod
+++ b/gcc/m2/gm2-libs/Builtins.mod
@@ -222,21 +222,23 @@ BEGIN
RETURN cbuiltin.ilogbl (x)
END ilogbl ;
+
PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_significand)) significand (r:
REAL) : REAL ;
BEGIN
- RETURN cbuiltin.significand (r)
+ RETURN cbuiltin.scalbn (r, -cbuiltin.ilogb (r))
END significand ;
PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_significandf)) significandf
(s: SHORTREAL) : SHORTREAL ;
BEGIN
- RETURN cbuiltin.significandf (s)
+ RETURN cbuiltin.scalbnf (s, -cbuiltin.ilogbf (s))
END significandf ;
PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_significandl)) significandl
(l: LONGREAL) : LONGREAL ;
BEGIN
- RETURN cbuiltin.significandl (l)
+ RETURN cbuiltin.scalbnl (l, -cbuiltin.ilogbl (l))
END significandl ;
+
PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_modf)) modf (x: REAL; VAR y:
REAL) : REAL ;
BEGIN
RETURN cbuiltin.modf (x, y)
@@ -299,17 +301,17 @@ END nexttowardl ;
PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_scalb)) scalb (x, n: REAL) :
REAL ;
BEGIN
- RETURN cbuiltin.scalb (x, n)
+ RETURN cbuiltin.scalbn (x, VAL (INTEGER, n))
END scalb ;
PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_scalbf)) scalbf (x, n:
SHORTREAL) : SHORTREAL ;
BEGIN
- RETURN cbuiltin.scalbf (x, n)
+ RETURN cbuiltin.scalbnf (x, VAL (INTEGER, n))
END scalbf ;
PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_scalbl)) scalbl (x, n:
LONGREAL) : LONGREAL ;
BEGIN
- RETURN cbuiltin.scalbl (x, n)
+ RETURN cbuiltin.scalbnl (x, VAL (INTEGER, n))
END scalbl ;
PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_scalbln)) scalbln (x: REAL;
n: LONGINT) : REAL ;
--
2.37.1 (Apple Git-137.1)