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
1 changed files with 22 additions and 11 deletions

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) */
switch(length) /* all the case statements fall through */
{
case 12: c+=((uint32_t)k[11])<<24; __attribute__ ((fallthrough));
case 11: c+=((uint32_t)k[10])<<16; __attribute__ ((fallthrough));
case 10: c+=((uint32_t)k[9])<<8; __attribute__ ((fallthrough));
case 9 : c+=k[8]; __attribute__ ((fallthrough));
case 8 : b+=((uint32_t)k[7])<<24; __attribute__ ((fallthrough));
case 7 : b+=((uint32_t)k[6])<<16; __attribute__ ((fallthrough));
case 6 : b+=((uint32_t)k[5])<<8; __attribute__ ((fallthrough));
case 5 : b+=k[4]; __attribute__ ((fallthrough));
case 4 : a+=((uint32_t)k[3])<<24; __attribute__ ((fallthrough));
case 3 : a+=((uint32_t)k[2])<<16; __attribute__ ((fallthrough));
case 2 : a+=((uint32_t)k[1])<<8; __attribute__ ((fallthrough));
case 12: c+=((uint32_t)k[11])<<24;
[[fallthrough]];
case 11: c+=((uint32_t)k[10])<<16;
[[fallthrough]];
case 10: c+=((uint32_t)k[9])<<8;
[[fallthrough]];
case 9 : c+=k[8];
[[fallthrough]];
case 8 : b+=((uint32_t)k[7])<<24;
[[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];
break;
case 0 : return c;