/* { dg-do compile } */
|
/* { dg-do compile } */
|
|
|
#if (__SIZEOF_INT__ <= 2)
|
#if (__SIZEOF_INT__ <= 2)
|
typedef unsigned long hashval_t;
|
typedef unsigned long hashval_t;
|
#else
|
#else
|
typedef unsigned int hashval_t;
|
typedef unsigned int hashval_t;
|
#endif
|
#endif
|
static hashval_t __attribute__((always_inline))
|
static hashval_t __attribute__((always_inline))
|
iterative_hash_host_wide_int (long val, hashval_t val2)
|
iterative_hash_host_wide_int (long val, hashval_t val2)
|
{
|
{
|
hashval_t a = (hashval_t) val;
|
hashval_t a = (hashval_t) val;
|
int zero = 0;
|
int zero = 0;
|
hashval_t b = (hashval_t) (val >> (sizeof (hashval_t) * 8 + zero));
|
hashval_t b = (hashval_t) (val >> (sizeof (hashval_t) * 8 + zero));
|
|
|
a -= b; a -= val2; a ^= (val2>>13);
|
a -= b; a -= val2; a ^= (val2>>13);
|
b -= val2; b -= a; b ^= (a<< 8);
|
b -= val2; b -= a; b ^= (a<< 8);
|
val2 -= a; val2 -= b; val2 ^= ((b&0xffffffff)>>13);
|
val2 -= a; val2 -= b; val2 ^= ((b&0xffffffff)>>13);
|
a -= b; a -= val2; a ^= ((val2&0xffffffff)>>12);
|
a -= b; a -= val2; a ^= ((val2&0xffffffff)>>12);
|
b -= val2; b -= a; b = (b ^ (a<<16)) & 0xffffffff;
|
b -= val2; b -= a; b = (b ^ (a<<16)) & 0xffffffff;
|
val2 -= a; val2 -= b; val2 = (val2 ^ (b>> 5)) & 0xffffffff;
|
val2 -= a; val2 -= b; val2 = (val2 ^ (b>> 5)) & 0xffffffff;
|
a -= b; a -= val2; a = (a ^ (val2>> 3)) & 0xffffffff;
|
a -= b; a -= val2; a = (a ^ (val2>> 3)) & 0xffffffff;
|
b -= val2; b -= a; b = (b ^ (a<<10)) & 0xffffffff;
|
b -= val2; b -= a; b = (b ^ (a<<10)) & 0xffffffff;
|
val2 -= a; val2 -= b; val2 = (val2 ^ (b>>15)) & 0xffffffff;
|
val2 -= a; val2 -= b; val2 = (val2 ^ (b>>15)) & 0xffffffff;
|
return val2;
|
return val2;
|
}
|
}
|
|
|
hashval_t
|
hashval_t
|
bla (int nunits, int mode)
|
bla (int nunits, int mode)
|
{
|
{
|
hashval_t hashcode = 0;
|
hashval_t hashcode = 0;
|
|
|
|
|
hashcode = iterative_hash_host_wide_int (14, hashcode);
|
hashcode = iterative_hash_host_wide_int (14, hashcode);
|
hashcode = iterative_hash_host_wide_int (nunits, hashcode);
|
hashcode = iterative_hash_host_wide_int (nunits, hashcode);
|
hashcode = iterative_hash_host_wide_int (mode, hashcode);
|
hashcode = iterative_hash_host_wide_int (mode, hashcode);
|
if (nunits)
|
if (nunits)
|
return 0;
|
return 0;
|
else
|
else
|
return hashcode;
|
return hashcode;
|
}
|
}
|
|
|