hash: remove VALGRIND #ifdef - always run clean.
authorRusty Russell <rusty@rustcorp.com.au>
Wed, 8 Jun 2011 07:44:36 +0000 (17:14 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Wed, 8 Jun 2011 07:46:42 +0000 (17:16 +0930)
My simple test program on my laptop showed that with modern 32 bit Intel
CPUs and modern GCC, there's no measurable penalty for the clean version.

Andrew Bartlett complained that the valgrind noise was grating.  Agreed.

ccan/hash/hash.c
ccan/tdb2/_info

index 4fe5cfe67c3f27c196964d5e00796ba80db49c67..59c4d24b3b989013a6ef7004f99e62151dc6ebfc 100644 (file)
@@ -259,9 +259,7 @@ static uint32_t hashlittle( const void *key, size_t length, uint32_t *val2 )
   u.ptr = key;
   if (HASH_LITTLE_ENDIAN && ((u.i & 0x3) == 0)) {
     const uint32_t *k = (const uint32_t *)key;         /* read 32-bit chunks */
-#ifdef VALGRIND
     const uint8_t  *k8;
-#endif
 
     /*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */
     while (length > 12)
@@ -283,9 +281,10 @@ static uint32_t hashlittle( const void *key, size_t length, uint32_t *val2 )
      * does it on word boundaries, so is OK with this.  But VALGRIND will
      * still catch it and complain.  The masking trick does make the hash
      * noticably faster for short strings (like English words).
+     *
+     * Not on my testing with gcc 4.5 on an intel i5 CPU, at least --RR.
      */
-#ifndef VALGRIND
-
+#if 0
     switch(length)
     {
     case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
@@ -437,9 +436,7 @@ static uint32_t hashbig( const void *key, size_t length, uint32_t *val2)
   u.ptr = key;
   if (HASH_BIG_ENDIAN && ((u.i & 0x3) == 0)) {
     const uint32_t *k = (const uint32_t *)key;         /* read 32-bit chunks */
-#ifdef VALGRIND
     const uint8_t  *k8;
-#endif
 
     /*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */
     while (length > 12)
@@ -461,9 +458,10 @@ static uint32_t hashbig( const void *key, size_t length, uint32_t *val2)
      * does it on word boundaries, so is OK with this.  But VALGRIND will
      * still catch it and complain.  The masking trick does make the hash
      * noticably faster for short strings (like English words).
+     *
+     * Not on my testing with gcc 4.5 on an intel i5 CPU, at least --RR.
      */
-#ifndef VALGRIND
-
+#if 0
     switch(length)
     {
     case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
index b1fc56d5622668638e2a03043de240a53d035130..a6d4ec7dc1b27d5512675f603178aea192b4bf29 100644 (file)
  * Author: Rusty Russell
  *
  * License: LGPLv3 (or later)
- *
- * Ccanlint:
- *     // hash fails because it accesses data in 4 byte quantities for speed.
- *     tests_pass_valgrind --partial-loads-ok=yes
  */
 int main(int argc, char *argv[])
 {