From b768e8cf27cd0d48c49cb1c4741d6a39067d0c1d Mon Sep 17 00:00:00 2001 From: David Edelsohn Date: Mon, 6 May 2013 15:40:54 +0000 Subject: hashtab.c (hash_pointer): Remove conditional and avoid unexecuted shift equal to wordsize. 2013-05-06 David Edelsohn Peter Bergner Segher Boessenkool Jakub Jelinek * hashtab.c (hash_pointer): Remove conditional and avoid unexecuted shift equal to wordsize. Co-Authored-By: Jakub Jelinek Co-Authored-By: Peter Bergner Co-Authored-By: Segher Boessenkool From-SVN: r198633 --- libiberty/ChangeLog | 8 ++++++++ libiberty/hashtab.c | 13 ++----------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 1420ad4..a30a363 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,11 @@ +2013-05-06 David Edelsohn + Peter Bergner + Segher Boessenkool + Jakub Jelinek + + * hashtab.c (hash_pointer): Remove conditional and avoid + unexecuted shift equal to wordsize. + 2013-04-22 Andi Kleen * hashtab.c (hash_pointer): Move to end of file and reimplement. diff --git a/libiberty/hashtab.c b/libiberty/hashtab.c index a2fe3ee..04607ea 100644 --- a/libiberty/hashtab.c +++ b/libiberty/hashtab.c @@ -990,17 +990,8 @@ hash_pointer (const PTR p) unsigned a, b, c; a = b = 0x9e3779b9; - if (sizeof (intptr_t) == 4) - { - /* Mix as 16bit for now */ - a += v >> 16; - b += v & 0xffff; - } - else - { - a += v >> 32; - b += v & 0xffffffff; - } + a += v >> (sizeof (intptr_t) * CHAR_BIT / 2); + b += v & (((intptr_t) 1 << (sizeof (intptr_t) * CHAR_BIT / 2)) - 1); c = 0x42135234; mix (a, b, c); return c; -- cgit v1.1