OSDN Git Service

* pointer-set.c (hash1): Don't use libm functions in fallback case.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 18 Oct 2004 16:44:50 +0000 (16:44 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 18 Oct 2004 16:44:50 +0000 (16:44 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@89231 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/pointer-set.c

index dcd3f1b..8e461b8 100644 (file)
@@ -1,3 +1,7 @@
+2004-10-18  Richard Henderson  <rth@redhat.com>
+
+       * pointer-set.c (hash1): Don't use libm functions in fallback case.
+
 2004-10-18  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR bootstrap/17684
index f8023c7..b7154de 100644 (file)
@@ -61,11 +61,10 @@ hash1 (const void *p, unsigned long max, unsigned long logmax)
 #elif HOST_BITS_PER_LONG == 64
   const unsigned long A = 0x9e3779b97f4a7c16ul;
 #else
-  const double M = (ULONG_MAX + 1.0);
-  const double B = M / ((sqrt (5) - 1) / 2.0);
-  const unsigned long A = B - (floor (B / M) * M);
+  const unsigned long A
+    = (ULONG_MAX + 1.0L) * 0.6180339887498948482045868343656381177203L;
 #endif
-  const unsigned long shift = sizeof (unsigned long) * CHAR_BIT - logmax;
+  const unsigned long shift = HOST_BITS_PER_LONG - logmax;
 
   return ((A * (unsigned long) p) >> shift) & (max - 1);
 }