aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2007-09-10 10:10:58 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2007-09-10 10:10:58 +0000
commita56955b1d7db685acd6917656ee2f54caa9778f8 (patch)
tree527a7b15c1476ce476c76cf60562d2af1c298ff1 /gcc
parentf8568ac02af9be51ab5cb267fcc7a5e839f23e62 (diff)
downloadgcc-a56955b1d7db685acd6917656ee2f54caa9778f8.zip
gcc-a56955b1d7db685acd6917656ee2f54caa9778f8.tar.gz
gcc-a56955b1d7db685acd6917656ee2f54caa9778f8.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/a-numaux-x86.adb5
2 files changed, 7 insertions, 3 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index b4824a9..e2b0849 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,10 @@
2007-09-10 Eric Botcazou <ebotcazou@adacore.com>
+ * a-numaux-x86.adb (Logarithmic_Pow): Do not silently clobber
+ x87 registers.
+
+2007-09-10 Eric Botcazou <ebotcazou@adacore.com>
+
* decl.c (gnat_to_gnu_entity) <object>: Deal with variable built for
a debug renaming declaration specially.
diff --git a/gcc/ada/a-numaux-x86.adb b/gcc/ada/a-numaux-x86.adb
index 5c85661..77a1acc 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),