Fix strict aliasing breakage in hash functions
Fix strict aliasing breakage in hash functions

For now, we're getting around the problem using GCC's `__may_alias__`
attribute, which turns off strict aliasing checks (and optimizations)
for a single type.  We might eventually need to find a more robust
solution.

dcreager/libcork,dcreager/libcork,ifduyue/libcork,dcreager/libcork,tempbottle/libcork,ifduyue/libcork,rogers0/libcork,dcreager/libcork,tempbottle/libcork,redjack/libcork,redjack/libcork,ifduyue/libcork,rogers0/libcork,redjack/libcork,tempbottle/libcork,tempbottle/libcork,dcreager/libcork,redjack/libcork,rogers0/libcork,rogers0/libcork,ifduyue/libcork,redjack/libcork,tempbottle/libcork,ifduyue/libcork,tempbottle/libcork,rogers0/libcork,rogers0/libcork,ifduyue/libcork,redjack/libcork