summaryrefslogtreecommitdiff
path: root/libiberty/copysign.c
diff options
context:
space:
mode:
authorDJ Delorie <dj@delorie.com>2002-01-22 20:14:53 +0000
committerDJ Delorie <dj@delorie.com>2002-01-22 20:14:53 +0000
commitd62bf15701f9040b0ff226c78a5fc734a1c5a1ce (patch)
treeca9e93ea7512a81b57fe3196cb79f1a891d162a9 /libiberty/copysign.c
parent5f5b983a9660d66cdfe71e34c13e25852c090065 (diff)
downloadgdb-d62bf15701f9040b0ff226c78a5fc734a1c5a1ce.tar.gz
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 0b5f8c3d9df..5c48a5422eb 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