From a56955b1d7db685acd6917656ee2f54caa9778f8 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Mon, 10 Sep 2007 10:10:58 +0000 Subject: [PATCH] a-numaux-x86.adb (Logarithmic_Pow): Do not silently clobber x87 registers. * a-numaux-x86.adb (Logarithmic_Pow): Do not silently clobber x87 registers. From-SVN: r128329 --- gcc/ada/ChangeLog | 5 +++++ gcc/ada/a-numaux-x86.adb | 5 ++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index b4824a9d5ce..e2b0849774a 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2007-09-10 Eric Botcazou + + * a-numaux-x86.adb (Logarithmic_Pow): Do not silently clobber + x87 registers. + 2007-09-10 Eric Botcazou * decl.c (gnat_to_gnu_entity) : Deal with variable built for diff --git a/gcc/ada/a-numaux-x86.adb b/gcc/ada/a-numaux-x86.adb index 5c85661eeb9..77a1acc3e24 100644 --- a/gcc/ada/a-numaux-x86.adb +++ b/gcc/ada/a-numaux-x86.adb @@ -302,15 +302,14 @@ package body Ada.Numerics.Aux is begin Asm (Template => "" -- X : Y & "fyl2x " & NL -- Y * Log2 (X) - & "fst %%st(1) " & NL -- Y * Log2 (X) : Y * Log2 (X) + & "fld %%st(0) " & NL -- Y * Log2 (X) : Y * Log2 (X) & "frndint " & NL -- Int (...) : Y * Log2 (X) & "fsubr %%st, %%st(1)" & NL -- Int (...) : Fract (...) & "fxch " & NL -- Fract (...) : Int (...) & "f2xm1 " & NL -- 2**Fract (...) - 1 : Int (...) & "fld1 " & NL -- 1 : 2**Fract (...) - 1 : Int (...) & "faddp %%st, %%st(1)" & NL -- 2**Fract (...) : Int (...) - & "fscale " & NL -- 2**(Fract (...) + Int (...)) - & "fstp %%st(1) ", + & "fscale ", -- 2**(Fract (...) + Int (...)) Outputs => Double'Asm_Output ("=t", Result), Inputs => (Double'Asm_Input ("0", X), -- 2.30.2