aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJohn David Anglin <dave.anglin@nrc-cnrc.gc.ca>2005-04-11 03:06:13 +0000
committerJohn David Anglin <danglin@gcc.gnu.org>2005-04-11 03:06:13 +0000
commit0dbca30748132482886593434b14d7242cdee9ad (patch)
tree69ffd9a8c0f39941740540ffcd7bba658decd014 /gcc
parentdcec6a4d7a09ecd7ccacff89778039663070fc4a (diff)
downloadgcc-0dbca30748132482886593434b14d7242cdee9ad.zip
gcc-0dbca30748132482886593434b14d7242cdee9ad.tar.gz
gcc-0dbca30748132482886593434b14d7242cdee9ad.tar.bz2
quadlib.c (_U_Qfneg): Toggle sign bit instead of subtracting from zero.
* pa/quadlib.c (_U_Qfneg): Toggle sign bit instead of subtracting from zero. From-SVN: r97961
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/pa/quadlib.c14
2 files changed, 16 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8824718..8a0a77b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2005-04-10 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * pa/quadlib.c (_U_Qfneg): Toggle sign bit instead of subtracting from
+ zero.
+
2005-04-10 Kazu Hirata <kazu@cs.umass.edu>
* config/arm/arm.c: Fix a comment typo.
diff --git a/gcc/config/pa/quadlib.c b/gcc/config/pa/quadlib.c
index 6dbfdcf..c377417 100644
--- a/gcc/config/pa/quadlib.c
+++ b/gcc/config/pa/quadlib.c
@@ -1,5 +1,5 @@
/* Subroutines for long double support.
- Copyright (C) 2000, 2002, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2002, 2004, 2005 Free Software Foundation, Inc.
This file is part of GCC.
@@ -160,11 +160,19 @@ _U_Qfcomp (long double a, long double b)
}
-/* This violates the IEEE standard. It is better to multiply by -1.0L. */
+/* Negate long double A. */
long double
_U_Qfneg (long double a)
{
- return (0.0L - a);
+ union
+ {
+ long double ld;
+ int i[4];
+ } u;
+
+ u.ld = a;
+ u.i[0] ^= 0x80000000;
+ return u.ld;
}
#ifdef __LP64__