aboutsummaryrefslogtreecommitdiff
path: root/libiberty/copysign.c
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2002-01-22 20:14:53 +0000
committerDJ Delorie <dj@redhat.com>2002-01-22 20:14:53 +0000
commitcc096b7166610e6cca71574ef936acbabc922708 (patch)
treee1f498ad212739694972f83364c71a374ce90a3d /libiberty/copysign.c
parent069e84fd968e0561b436e2af0bd2310e028fd04f (diff)
downloadgdb-cc096b7166610e6cca71574ef936acbabc922708.zip
gdb-cc096b7166610e6cca71574ef936acbabc922708.tar.gz
gdb-cc096b7166610e6cca71574ef936acbabc922708.tar.bz2
merge from gcc
Diffstat (limited to 'libiberty/copysign.c')
-rw-r--r--libiberty/copysign.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/libiberty/copysign.c b/libiberty/copysign.c
index 0b5f8c3..5c48a54 100644
--- a/libiberty/copysign.c
+++ b/libiberty/copysign.c
@@ -129,6 +129,7 @@ typedef union
} __ieee_float_shape_type;
#endif
+#if defined(__IEEE_BIG_ENDIAN) || defined(__IEEE_LITTLE_ENDIAN)
double DEFUN(copysign, (x, y), double x AND double y)
{
@@ -138,3 +139,14 @@ double DEFUN(copysign, (x, y), double x AND double y)
a.number.sign =b.number.sign;
return a.value;
}
+
+#else
+
+double DEFUN(copysign, (x, y), double x AND double y)
+{
+ if ((x < 0 && y > 0) || (x > 0 && y < 0))
+ return -x;
+ return x;
+}
+
+#endif