From: Rusty Russell Date: Wed, 8 Jun 2011 07:44:36 +0000 (+0930) Subject: hash: remove VALGRIND #ifdef - always run clean. X-Git-Url: http://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=233190071e5834e1a701d6d2ef4bc0a46cecc537 hash: remove VALGRIND #ifdef - always run clean. 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. --- diff --git a/ccan/hash/hash.c b/ccan/hash/hash.c index 4fe5cfe6..59c4d24b 100644 --- a/ccan/hash/hash.c +++ b/ccan/hash/hash.c @@ -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; diff --git a/ccan/tdb2/_info b/ccan/tdb2/_info index b1fc56d5..a6d4ec7d 100644 --- a/ccan/tdb2/_info +++ b/ccan/tdb2/_info @@ -65,10 +65,6 @@ * 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[]) {