OSDN Git Service

* real.c (real_floor): Don't leave the result uninitialized when
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 20 Jan 2005 21:53:31 +0000 (21:53 +0000)
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 20 Jan 2005 21:53:31 +0000 (21:53 +0000)
mode is VOIDMode, but return the unrounded intermediate value.
(real_ceil): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93988 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/real.c

index f6cf77f..1044ec6 100644 (file)
@@ -1,3 +1,9 @@
+2005-01-20  Roger Sayle  <roger@eyesopen.com>
+
+       * real.c (real_floor): Don't leave the result uninitialized when
+       mode is VOIDMode, but return the unrounded intermediate value.
+       (real_ceil): Likewise.
+
 2005-01-20  Paul Brook  <paul@codesourcery.com>
 
        * config/arm/arm.md (insv): Use gen_int_mode.
index ebd402a..5871d1e 100644 (file)
@@ -1,6 +1,6 @@
 /* real.c - software floating point emulation.
    Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-   2000, 2002, 2003, 2004 Free Software Foundation, Inc.
+   2000, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    Contributed by Stephen L. Moshier (moshier@world.std.com).
    Re-written by Richard Henderson <rth@redhat.com>
 
@@ -4625,6 +4625,8 @@ real_floor (REAL_VALUE_TYPE *r, enum machine_mode mode,
     do_add (&t, &t, &dconstm1, 0);
   if (mode != VOIDmode)
     real_convert (r, mode, &t);
+  else
+    *r = t;
 }
 
 /* Round X to the smallest integer not less then argument, i.e. round
@@ -4641,6 +4643,8 @@ real_ceil (REAL_VALUE_TYPE *r, enum machine_mode mode,
     do_add (&t, &t, &dconst1, 0);
   if (mode != VOIDmode)
     real_convert (r, mode, &t);
+  else
+    *r = t;
 }
 
 /* Round X to the nearest integer, but round halfway cases away from