Keep both Clang and gcc happy with fallthrough cases

This commit is contained in:
Bill Somerville 2020-05-07 15:31:44 +01:00
parent cf6893e56b
commit f194a516e6

View File

@ -348,17 +348,28 @@ uint32_t nhash( const void *key, size_t length, uint32_t initval)
/*-------------------------------- last block: affect all 32 bits of (c) */ /*-------------------------------- last block: affect all 32 bits of (c) */
switch(length) /* all the case statements fall through */ switch(length) /* all the case statements fall through */
{ {
case 12: c+=((uint32_t)k[11])<<24; __attribute__ ((fallthrough)); case 12: c+=((uint32_t)k[11])<<24;
case 11: c+=((uint32_t)k[10])<<16; __attribute__ ((fallthrough)); [[fallthrough]];
case 10: c+=((uint32_t)k[9])<<8; __attribute__ ((fallthrough)); case 11: c+=((uint32_t)k[10])<<16;
case 9 : c+=k[8]; __attribute__ ((fallthrough)); [[fallthrough]];
case 8 : b+=((uint32_t)k[7])<<24; __attribute__ ((fallthrough)); case 10: c+=((uint32_t)k[9])<<8;
case 7 : b+=((uint32_t)k[6])<<16; __attribute__ ((fallthrough)); [[fallthrough]];
case 6 : b+=((uint32_t)k[5])<<8; __attribute__ ((fallthrough)); case 9 : c+=k[8];
case 5 : b+=k[4]; __attribute__ ((fallthrough)); [[fallthrough]];
case 4 : a+=((uint32_t)k[3])<<24; __attribute__ ((fallthrough)); case 8 : b+=((uint32_t)k[7])<<24;
case 3 : a+=((uint32_t)k[2])<<16; __attribute__ ((fallthrough)); [[fallthrough]];
case 2 : a+=((uint32_t)k[1])<<8; __attribute__ ((fallthrough)); case 7 : b+=((uint32_t)k[6])<<16;
[[fallthrough]];
case 6 : b+=((uint32_t)k[5])<<8;
[[fallthrough]];
case 5 : b+=k[4];
[[fallthrough]];
case 4 : a+=((uint32_t)k[3])<<24;
[[fallthrough]];
case 3 : a+=((uint32_t)k[2])<<16;
[[fallthrough]];
case 2 : a+=((uint32_t)k[1])<<8;
[[fallthrough]];
case 1 : a+=k[0]; case 1 : a+=k[0];
break; break;
case 0 : return c; case 0 : return c;