crc32: suppress -Wimplicit-fallthrough warnings

Summary:
Workaround a bunch of "implicit-fallthrough" compiler errors, like:

```
util/crc32c.cc:533:7: error: this statement may fall through [-Werror=implicit-fallthrough=]
   crc = _mm_crc32_u64(crc, *(uint64_t*)(buf + offset));
       ^
util/crc32c.cc:1016:9: note: in expansion of macro ‘CRCsinglet’
         CRCsinglet(crc0, next, -2 * 8);
         ^~~~~~~~~~
util/crc32c.cc:1017:7: note: here
       case 1:
```
Closes https://github.com/facebook/rocksdb/pull/3339

Reviewed By: sagar0

Differential Revision: D6874736

Pulled By: quark-zju

fbshipit-source-id: eec9f3bc135e12fca336928d01711006d5c3cb16
This commit is contained in:
Jun Wu 2018-02-01 14:15:28 -08:00 committed by Zhongyi Xie
parent 20269d080a
commit 935e834534

View File

@ -688,259 +688,386 @@ uint32_t crc32c_3way(uint32_t crc, const char* buf, size_t len) {
do { do {
// jumps here for a full block of len 128 // jumps here for a full block of len 128
CRCtriplet(crc, next, -128); CRCtriplet(crc, next, -128);
// FALLTHRU
case 127: case 127:
// jumps here or below for the first block smaller // jumps here or below for the first block smaller
CRCtriplet(crc, next, -127); CRCtriplet(crc, next, -127);
// FALLTHRU
case 126: case 126:
CRCtriplet(crc, next, -126); // than 128 CRCtriplet(crc, next, -126); // than 128
// FALLTHRU
case 125: case 125:
CRCtriplet(crc, next, -125); CRCtriplet(crc, next, -125);
// FALLTHRU
case 124: case 124:
CRCtriplet(crc, next, -124); CRCtriplet(crc, next, -124);
// FALLTHRU
case 123: case 123:
CRCtriplet(crc, next, -123); CRCtriplet(crc, next, -123);
// FALLTHRU
case 122: case 122:
CRCtriplet(crc, next, -122); CRCtriplet(crc, next, -122);
// FALLTHRU
case 121: case 121:
CRCtriplet(crc, next, -121); CRCtriplet(crc, next, -121);
// FALLTHRU
case 120: case 120:
CRCtriplet(crc, next, -120); CRCtriplet(crc, next, -120);
// FALLTHRU
case 119: case 119:
CRCtriplet(crc, next, -119); CRCtriplet(crc, next, -119);
// FALLTHRU
case 118: case 118:
CRCtriplet(crc, next, -118); CRCtriplet(crc, next, -118);
// FALLTHRU
case 117: case 117:
CRCtriplet(crc, next, -117); CRCtriplet(crc, next, -117);
// FALLTHRU
case 116: case 116:
CRCtriplet(crc, next, -116); CRCtriplet(crc, next, -116);
// FALLTHRU
case 115: case 115:
CRCtriplet(crc, next, -115); CRCtriplet(crc, next, -115);
// FALLTHRU
case 114: case 114:
CRCtriplet(crc, next, -114); CRCtriplet(crc, next, -114);
// FALLTHRU
case 113: case 113:
CRCtriplet(crc, next, -113); CRCtriplet(crc, next, -113);
// FALLTHRU
case 112: case 112:
CRCtriplet(crc, next, -112); CRCtriplet(crc, next, -112);
// FALLTHRU
case 111: case 111:
CRCtriplet(crc, next, -111); CRCtriplet(crc, next, -111);
// FALLTHRU
case 110: case 110:
CRCtriplet(crc, next, -110); CRCtriplet(crc, next, -110);
// FALLTHRU
case 109: case 109:
CRCtriplet(crc, next, -109); CRCtriplet(crc, next, -109);
// FALLTHRU
case 108: case 108:
CRCtriplet(crc, next, -108); CRCtriplet(crc, next, -108);
// FALLTHRU
case 107: case 107:
CRCtriplet(crc, next, -107); CRCtriplet(crc, next, -107);
// FALLTHRU
case 106: case 106:
CRCtriplet(crc, next, -106); CRCtriplet(crc, next, -106);
// FALLTHRU
case 105: case 105:
CRCtriplet(crc, next, -105); CRCtriplet(crc, next, -105);
// FALLTHRU
case 104: case 104:
CRCtriplet(crc, next, -104); CRCtriplet(crc, next, -104);
// FALLTHRU
case 103: case 103:
CRCtriplet(crc, next, -103); CRCtriplet(crc, next, -103);
// FALLTHRU
case 102: case 102:
CRCtriplet(crc, next, -102); CRCtriplet(crc, next, -102);
// FALLTHRU
case 101: case 101:
CRCtriplet(crc, next, -101); CRCtriplet(crc, next, -101);
// FALLTHRU
case 100: case 100:
CRCtriplet(crc, next, -100); CRCtriplet(crc, next, -100);
// FALLTHRU
case 99: case 99:
CRCtriplet(crc, next, -99); CRCtriplet(crc, next, -99);
// FALLTHRU
case 98: case 98:
CRCtriplet(crc, next, -98); CRCtriplet(crc, next, -98);
// FALLTHRU
case 97: case 97:
CRCtriplet(crc, next, -97); CRCtriplet(crc, next, -97);
// FALLTHRU
case 96: case 96:
CRCtriplet(crc, next, -96); CRCtriplet(crc, next, -96);
// FALLTHRU
case 95: case 95:
CRCtriplet(crc, next, -95); CRCtriplet(crc, next, -95);
// FALLTHRU
case 94: case 94:
CRCtriplet(crc, next, -94); CRCtriplet(crc, next, -94);
// FALLTHRU
case 93: case 93:
CRCtriplet(crc, next, -93); CRCtriplet(crc, next, -93);
// FALLTHRU
case 92: case 92:
CRCtriplet(crc, next, -92); CRCtriplet(crc, next, -92);
// FALLTHRU
case 91: case 91:
CRCtriplet(crc, next, -91); CRCtriplet(crc, next, -91);
// FALLTHRU
case 90: case 90:
CRCtriplet(crc, next, -90); CRCtriplet(crc, next, -90);
// FALLTHRU
case 89: case 89:
CRCtriplet(crc, next, -89); CRCtriplet(crc, next, -89);
// FALLTHRU
case 88: case 88:
CRCtriplet(crc, next, -88); CRCtriplet(crc, next, -88);
// FALLTHRU
case 87: case 87:
CRCtriplet(crc, next, -87); CRCtriplet(crc, next, -87);
// FALLTHRU
case 86: case 86:
CRCtriplet(crc, next, -86); CRCtriplet(crc, next, -86);
// FALLTHRU
case 85: case 85:
CRCtriplet(crc, next, -85); CRCtriplet(crc, next, -85);
// FALLTHRU
case 84: case 84:
CRCtriplet(crc, next, -84); CRCtriplet(crc, next, -84);
// FALLTHRU
case 83: case 83:
CRCtriplet(crc, next, -83); CRCtriplet(crc, next, -83);
// FALLTHRU
case 82: case 82:
CRCtriplet(crc, next, -82); CRCtriplet(crc, next, -82);
// FALLTHRU
case 81: case 81:
CRCtriplet(crc, next, -81); CRCtriplet(crc, next, -81);
// FALLTHRU
case 80: case 80:
CRCtriplet(crc, next, -80); CRCtriplet(crc, next, -80);
// FALLTHRU
case 79: case 79:
CRCtriplet(crc, next, -79); CRCtriplet(crc, next, -79);
// FALLTHRU
case 78: case 78:
CRCtriplet(crc, next, -78); CRCtriplet(crc, next, -78);
// FALLTHRU
case 77: case 77:
CRCtriplet(crc, next, -77); CRCtriplet(crc, next, -77);
// FALLTHRU
case 76: case 76:
CRCtriplet(crc, next, -76); CRCtriplet(crc, next, -76);
// FALLTHRU
case 75: case 75:
CRCtriplet(crc, next, -75); CRCtriplet(crc, next, -75);
// FALLTHRU
case 74: case 74:
CRCtriplet(crc, next, -74); CRCtriplet(crc, next, -74);
// FALLTHRU
case 73: case 73:
CRCtriplet(crc, next, -73); CRCtriplet(crc, next, -73);
// FALLTHRU
case 72: case 72:
CRCtriplet(crc, next, -72); CRCtriplet(crc, next, -72);
// FALLTHRU
case 71: case 71:
CRCtriplet(crc, next, -71); CRCtriplet(crc, next, -71);
// FALLTHRU
case 70: case 70:
CRCtriplet(crc, next, -70); CRCtriplet(crc, next, -70);
// FALLTHRU
case 69: case 69:
CRCtriplet(crc, next, -69); CRCtriplet(crc, next, -69);
// FALLTHRU
case 68: case 68:
CRCtriplet(crc, next, -68); CRCtriplet(crc, next, -68);
// FALLTHRU
case 67: case 67:
CRCtriplet(crc, next, -67); CRCtriplet(crc, next, -67);
// FALLTHRU
case 66: case 66:
CRCtriplet(crc, next, -66); CRCtriplet(crc, next, -66);
// FALLTHRU
case 65: case 65:
CRCtriplet(crc, next, -65); CRCtriplet(crc, next, -65);
// FALLTHRU
case 64: case 64:
CRCtriplet(crc, next, -64); CRCtriplet(crc, next, -64);
// FALLTHRU
case 63: case 63:
CRCtriplet(crc, next, -63); CRCtriplet(crc, next, -63);
// FALLTHRU
case 62: case 62:
CRCtriplet(crc, next, -62); CRCtriplet(crc, next, -62);
// FALLTHRU
case 61: case 61:
CRCtriplet(crc, next, -61); CRCtriplet(crc, next, -61);
// FALLTHRU
case 60: case 60:
CRCtriplet(crc, next, -60); CRCtriplet(crc, next, -60);
// FALLTHRU
case 59: case 59:
CRCtriplet(crc, next, -59); CRCtriplet(crc, next, -59);
// FALLTHRU
case 58: case 58:
CRCtriplet(crc, next, -58); CRCtriplet(crc, next, -58);
// FALLTHRU
case 57: case 57:
CRCtriplet(crc, next, -57); CRCtriplet(crc, next, -57);
// FALLTHRU
case 56: case 56:
CRCtriplet(crc, next, -56); CRCtriplet(crc, next, -56);
// FALLTHRU
case 55: case 55:
CRCtriplet(crc, next, -55); CRCtriplet(crc, next, -55);
// FALLTHRU
case 54: case 54:
CRCtriplet(crc, next, -54); CRCtriplet(crc, next, -54);
// FALLTHRU
case 53: case 53:
CRCtriplet(crc, next, -53); CRCtriplet(crc, next, -53);
// FALLTHRU
case 52: case 52:
CRCtriplet(crc, next, -52); CRCtriplet(crc, next, -52);
// FALLTHRU
case 51: case 51:
CRCtriplet(crc, next, -51); CRCtriplet(crc, next, -51);
// FALLTHRU
case 50: case 50:
CRCtriplet(crc, next, -50); CRCtriplet(crc, next, -50);
// FALLTHRU
case 49: case 49:
CRCtriplet(crc, next, -49); CRCtriplet(crc, next, -49);
// FALLTHRU
case 48: case 48:
CRCtriplet(crc, next, -48); CRCtriplet(crc, next, -48);
// FALLTHRU
case 47: case 47:
CRCtriplet(crc, next, -47); CRCtriplet(crc, next, -47);
// FALLTHRU
case 46: case 46:
CRCtriplet(crc, next, -46); CRCtriplet(crc, next, -46);
// FALLTHRU
case 45: case 45:
CRCtriplet(crc, next, -45); CRCtriplet(crc, next, -45);
// FALLTHRU
case 44: case 44:
CRCtriplet(crc, next, -44); CRCtriplet(crc, next, -44);
// FALLTHRU
case 43: case 43:
CRCtriplet(crc, next, -43); CRCtriplet(crc, next, -43);
// FALLTHRU
case 42: case 42:
CRCtriplet(crc, next, -42); CRCtriplet(crc, next, -42);
// FALLTHRU
case 41: case 41:
CRCtriplet(crc, next, -41); CRCtriplet(crc, next, -41);
// FALLTHRU
case 40: case 40:
CRCtriplet(crc, next, -40); CRCtriplet(crc, next, -40);
// FALLTHRU
case 39: case 39:
CRCtriplet(crc, next, -39); CRCtriplet(crc, next, -39);
// FALLTHRU
case 38: case 38:
CRCtriplet(crc, next, -38); CRCtriplet(crc, next, -38);
// FALLTHRU
case 37: case 37:
CRCtriplet(crc, next, -37); CRCtriplet(crc, next, -37);
// FALLTHRU
case 36: case 36:
CRCtriplet(crc, next, -36); CRCtriplet(crc, next, -36);
// FALLTHRU
case 35: case 35:
CRCtriplet(crc, next, -35); CRCtriplet(crc, next, -35);
// FALLTHRU
case 34: case 34:
CRCtriplet(crc, next, -34); CRCtriplet(crc, next, -34);
// FALLTHRU
case 33: case 33:
CRCtriplet(crc, next, -33); CRCtriplet(crc, next, -33);
// FALLTHRU
case 32: case 32:
CRCtriplet(crc, next, -32); CRCtriplet(crc, next, -32);
// FALLTHRU
case 31: case 31:
CRCtriplet(crc, next, -31); CRCtriplet(crc, next, -31);
// FALLTHRU
case 30: case 30:
CRCtriplet(crc, next, -30); CRCtriplet(crc, next, -30);
// FALLTHRU
case 29: case 29:
CRCtriplet(crc, next, -29); CRCtriplet(crc, next, -29);
// FALLTHRU
case 28: case 28:
CRCtriplet(crc, next, -28); CRCtriplet(crc, next, -28);
// FALLTHRU
case 27: case 27:
CRCtriplet(crc, next, -27); CRCtriplet(crc, next, -27);
// FALLTHRU
case 26: case 26:
CRCtriplet(crc, next, -26); CRCtriplet(crc, next, -26);
// FALLTHRU
case 25: case 25:
CRCtriplet(crc, next, -25); CRCtriplet(crc, next, -25);
// FALLTHRU
case 24: case 24:
CRCtriplet(crc, next, -24); CRCtriplet(crc, next, -24);
// FALLTHRU
case 23: case 23:
CRCtriplet(crc, next, -23); CRCtriplet(crc, next, -23);
// FALLTHRU
case 22: case 22:
CRCtriplet(crc, next, -22); CRCtriplet(crc, next, -22);
// FALLTHRU
case 21: case 21:
CRCtriplet(crc, next, -21); CRCtriplet(crc, next, -21);
// FALLTHRU
case 20: case 20:
CRCtriplet(crc, next, -20); CRCtriplet(crc, next, -20);
// FALLTHRU
case 19: case 19:
CRCtriplet(crc, next, -19); CRCtriplet(crc, next, -19);
// FALLTHRU
case 18: case 18:
CRCtriplet(crc, next, -18); CRCtriplet(crc, next, -18);
// FALLTHRU
case 17: case 17:
CRCtriplet(crc, next, -17); CRCtriplet(crc, next, -17);
// FALLTHRU
case 16: case 16:
CRCtriplet(crc, next, -16); CRCtriplet(crc, next, -16);
// FALLTHRU
case 15: case 15:
CRCtriplet(crc, next, -15); CRCtriplet(crc, next, -15);
// FALLTHRU
case 14: case 14:
CRCtriplet(crc, next, -14); CRCtriplet(crc, next, -14);
// FALLTHRU
case 13: case 13:
CRCtriplet(crc, next, -13); CRCtriplet(crc, next, -13);
// FALLTHRU
case 12: case 12:
CRCtriplet(crc, next, -12); CRCtriplet(crc, next, -12);
// FALLTHRU
case 11: case 11:
CRCtriplet(crc, next, -11); CRCtriplet(crc, next, -11);
// FALLTHRU
case 10: case 10:
CRCtriplet(crc, next, -10); CRCtriplet(crc, next, -10);
// FALLTHRU
case 9: case 9:
CRCtriplet(crc, next, -9); CRCtriplet(crc, next, -9);
// FALLTHRU
case 8: case 8:
CRCtriplet(crc, next, -8); CRCtriplet(crc, next, -8);
// FALLTHRU
case 7: case 7:
CRCtriplet(crc, next, -7); CRCtriplet(crc, next, -7);
// FALLTHRU
case 6: case 6:
CRCtriplet(crc, next, -6); CRCtriplet(crc, next, -6);
// FALLTHRU
case 5: case 5:
CRCtriplet(crc, next, -5); CRCtriplet(crc, next, -5);
// FALLTHRU
case 4: case 4:
CRCtriplet(crc, next, -4); CRCtriplet(crc, next, -4);
// FALLTHRU
case 3: case 3:
CRCtriplet(crc, next, -3); CRCtriplet(crc, next, -3);
// FALLTHRU
case 2: case 2:
CRCtriplet(crc, next, -2); CRCtriplet(crc, next, -2);
// FALLTHRU
case 1: case 1:
CRCduplet(crc, next, -1); // the final triplet is actually only 2 CRCduplet(crc, next, -1); // the final triplet is actually only 2
//{ CombineCRC(); } //{ CombineCRC(); }
@ -953,6 +1080,7 @@ uint32_t crc32c_3way(uint32_t crc, const char* buf, size_t len) {
next1 = next0 + 128; // from here on all blocks are 128 long next1 = next0 + 128; // from here on all blocks are 128 long
next2 = next1 + 128; next2 = next1 + 128;
} }
// FALLTHRU
case 0:; case 0:;
} while (n > 0); } while (n > 0);
} }
@ -964,58 +1092,85 @@ uint32_t crc32c_3way(uint32_t crc, const char* buf, size_t len) {
switch (count2) { switch (count2) {
case 27: case 27:
CRCsinglet(crc0, next, -27 * 8); CRCsinglet(crc0, next, -27 * 8);
// FALLTHRU
case 26: case 26:
CRCsinglet(crc0, next, -26 * 8); CRCsinglet(crc0, next, -26 * 8);
// FALLTHRU
case 25: case 25:
CRCsinglet(crc0, next, -25 * 8); CRCsinglet(crc0, next, -25 * 8);
// FALLTHRU
case 24: case 24:
CRCsinglet(crc0, next, -24 * 8); CRCsinglet(crc0, next, -24 * 8);
// FALLTHRU
case 23: case 23:
CRCsinglet(crc0, next, -23 * 8); CRCsinglet(crc0, next, -23 * 8);
// FALLTHRU
case 22: case 22:
CRCsinglet(crc0, next, -22 * 8); CRCsinglet(crc0, next, -22 * 8);
// FALLTHRU
case 21: case 21:
CRCsinglet(crc0, next, -21 * 8); CRCsinglet(crc0, next, -21 * 8);
// FALLTHRU
case 20: case 20:
CRCsinglet(crc0, next, -20 * 8); CRCsinglet(crc0, next, -20 * 8);
// FALLTHRU
case 19: case 19:
CRCsinglet(crc0, next, -19 * 8); CRCsinglet(crc0, next, -19 * 8);
// FALLTHRU
case 18: case 18:
CRCsinglet(crc0, next, -18 * 8); CRCsinglet(crc0, next, -18 * 8);
// FALLTHRU
case 17: case 17:
CRCsinglet(crc0, next, -17 * 8); CRCsinglet(crc0, next, -17 * 8);
// FALLTHRU
case 16: case 16:
CRCsinglet(crc0, next, -16 * 8); CRCsinglet(crc0, next, -16 * 8);
// FALLTHRU
case 15: case 15:
CRCsinglet(crc0, next, -15 * 8); CRCsinglet(crc0, next, -15 * 8);
// FALLTHRU
case 14: case 14:
CRCsinglet(crc0, next, -14 * 8); CRCsinglet(crc0, next, -14 * 8);
// FALLTHRU
case 13: case 13:
CRCsinglet(crc0, next, -13 * 8); CRCsinglet(crc0, next, -13 * 8);
// FALLTHRU
case 12: case 12:
CRCsinglet(crc0, next, -12 * 8); CRCsinglet(crc0, next, -12 * 8);
// FALLTHRU
case 11: case 11:
CRCsinglet(crc0, next, -11 * 8); CRCsinglet(crc0, next, -11 * 8);
// FALLTHRU
case 10: case 10:
CRCsinglet(crc0, next, -10 * 8); CRCsinglet(crc0, next, -10 * 8);
// FALLTHRU
case 9: case 9:
CRCsinglet(crc0, next, -9 * 8); CRCsinglet(crc0, next, -9 * 8);
// FALLTHRU
case 8: case 8:
CRCsinglet(crc0, next, -8 * 8); CRCsinglet(crc0, next, -8 * 8);
// FALLTHRU
case 7: case 7:
CRCsinglet(crc0, next, -7 * 8); CRCsinglet(crc0, next, -7 * 8);
// FALLTHRU
case 6: case 6:
CRCsinglet(crc0, next, -6 * 8); CRCsinglet(crc0, next, -6 * 8);
// FALLTHRU
case 5: case 5:
CRCsinglet(crc0, next, -5 * 8); CRCsinglet(crc0, next, -5 * 8);
// FALLTHRU
case 4: case 4:
CRCsinglet(crc0, next, -4 * 8); CRCsinglet(crc0, next, -4 * 8);
// FALLTHRU
case 3: case 3:
CRCsinglet(crc0, next, -3 * 8); CRCsinglet(crc0, next, -3 * 8);
// FALLTHRU
case 2: case 2:
CRCsinglet(crc0, next, -2 * 8); CRCsinglet(crc0, next, -2 * 8);
// FALLTHRU
case 1: case 1:
CRCsinglet(crc0, next, -1 * 8); CRCsinglet(crc0, next, -1 * 8);
// FALLTHRU
case 0:; case 0:;
} }
} }