diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1d64969bc432dbbcdc618e6ee64d296789639de1..87770194044fa89c15a15d4f8fc78de3c85f27f1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2006-06-23  Ben Elliston  <bje@au.ibm.com>
+
+	* dfp.c (decimal_to_decnumber): Do not use decNumberNegate to
+	negate dn -- manipulate it directly.
+
 2006-06-22  Roger Sayle  <roger@eyesopen.com>
 	    Steven Bosscher  <stevenb.gcc@gmail.com>
 
diff --git a/gcc/dfp.c b/gcc/dfp.c
index 5072264cb509053578b25ce74383eb0180f9ed9a..f6a538731db4d5d1d5e63cf1606f5a45e166b6f2 100644
--- a/gcc/dfp.c
+++ b/gcc/dfp.c
@@ -137,7 +137,7 @@ decimal_to_decnumber (const REAL_VALUE_TYPE *r, decNumber *dn)
 
   /* Fix up sign bit.  */
   if (r->sign != decNumberIsNegative (dn))
-    decNumberNegate (dn);
+    dn->bits ^= DECNEG;
 }
 
 /* Encode a real into an IEEE 754R decimal32 type.  */
diff --git a/libdecnumber/ChangeLog b/libdecnumber/ChangeLog
index 5fe0d11c6a841c4c166ae3483ea1fc53e5341821..61aea9433e5927ceb3242c16b1d5f68a27132c49 100644
--- a/libdecnumber/ChangeLog
+++ b/libdecnumber/ChangeLog
@@ -1,3 +1,7 @@
+2006-06-23  Ben Elliston  <bje@au.ibm.com>
+
+	* decNumber.h (decNumberNegate): Remove.
+
 2006-05-23  Carlos O'Donell  <carlos@codesourcery.com>
 
 	* Makefile.in: Add install-html target. Add install-html to .PHONY
diff --git a/libdecnumber/decNumber.h b/libdecnumber/decNumber.h
index a4c45d0305299a8f7961c802ec07879d18a464f2..a4e81cd405391fc3f788b9cdc53f54645faa5d13 100644
--- a/libdecnumber/decNumber.h
+++ b/libdecnumber/decNumber.h
@@ -178,6 +178,5 @@ decNumber *decNumberZero (decNumber *);
 #define decNumberIsNegative(dn) (((dn)->bits&DECNEG)!=0)
 #define decNumberIsNaN(dn)      (((dn)->bits&(DECNAN|DECSNAN))!=0)
 #define decNumberIsInfinite(dn) (((dn)->bits&DECINF)!=0)
-#define decNumberNegate(dn) (((dn)->bits)^=DECNEG)
 
 #endif