diff options
author | David Edelsohn <dje.gcc@gmail.com> | 2013-05-06 15:40:54 +0000 |
---|---|---|
committer | David Edelsohn <dje@gcc.gnu.org> | 2013-05-06 11:40:54 -0400 |
commit | b768e8cf27cd0d48c49cb1c4741d6a39067d0c1d (patch) | |
tree | 146705cbed2fdf5ab54949aa16089558e9056763 /libiberty/hashtab.c | |
parent | cb3f6a88f6c9cbcfccb171f4c83aa3beb4f59319 (diff) |
hashtab.c (hash_pointer): Remove conditional and avoid unexecuted shift equal to wordsize.
2013-05-06 David Edelsohn <dje.gcc@gmail.com>
Peter Bergner <bergner@vnet.ibm.com>
Segher Boessenkool <segher@kernel.crashing.org>
Jakub Jelinek <jakub@redhat.com>
* hashtab.c (hash_pointer): Remove conditional and avoid
unexecuted shift equal to wordsize.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
Co-Authored-By: Peter Bergner <bergner@vnet.ibm.com>
Co-Authored-By: Segher Boessenkool <segher@kernel.crashing.org>
From-SVN: r198633
Diffstat (limited to 'libiberty/hashtab.c')
-rw-r--r-- | libiberty/hashtab.c | 13 |
1 files changed, 2 insertions, 11 deletions
diff --git a/libiberty/hashtab.c b/libiberty/hashtab.c index a2fe3ee3bdd..04607ea6a01 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; |