emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master a1b7956: Simplify float_arith_driver


From: Paul Eggert
Subject: [Emacs-diffs] master a1b7956: Simplify float_arith_driver
Date: Sat, 18 Aug 2018 23:47:44 -0400 (EDT)

branch: master
commit a1b79567a8253a8e8a1ceed02145a64b87a4768d
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    Simplify float_arith_driver
    
    * src/data.c (float_arith_driver): Simplify, as we needn’t
    worry about that 30-year-old compiler bug any more.
---
 src/data.c | 20 ++++----------------
 1 file changed, 4 insertions(+), 16 deletions(-)

diff --git a/src/data.c b/src/data.c
index 7a8179e..5ef0ef8 100644
--- a/src/data.c
+++ b/src/data.c
@@ -2966,26 +2966,14 @@ static Lisp_Object
 float_arith_driver (double accum, ptrdiff_t argnum, enum arithop code,
                    ptrdiff_t nargs, Lisp_Object *args)
 {
-  register Lisp_Object val;
-  double next;
-
   for (; argnum < nargs; argnum++)
     {
-      /* using args[argnum] as argument to CHECK_NUMBER_... */
-      val = args[argnum];
+      Lisp_Object val = args[argnum];
       CHECK_NUMBER_COERCE_MARKER (val);
+      double next = (FIXNUMP (val) ? XFIXNUM (val)
+                    : FLOATP (val) ? XFLOAT_DATA (val)
+                    : mpz_get_d (XBIGNUM (val)->value));
 
-      if (FLOATP (val))
-       {
-         next = XFLOAT_DATA (val);
-       }
-      else if (BIGNUMP (val))
-       next = mpz_get_d (XBIGNUM (val)->value);
-      else
-       {
-         args[argnum] = val;    /* runs into a compiler bug. */
-         next = XFIXNUM (args[argnum]);
-       }
       switch (code)
        {
        case Aadd:



reply via email to

[Prev in Thread] Current Thread [Next in Thread]