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)