Fix GCC 7 -Wimplicit-fallthrough warnings.

This commit is contained in:
Mike Pall 2018-01-29 13:06:13 +01:00
parent b03a56f28e
commit d4ee803427
10 changed files with 33 additions and 5 deletions

View File

@ -254,6 +254,7 @@ void dasm_put(Dst_DECL, int start, ...)
case DASM_IMMV8: case DASM_IMMV8:
CK((n & 3) == 0, RANGE_I); CK((n & 3) == 0, RANGE_I);
n >>= 2; n >>= 2;
/* fallthrough */
case DASM_IMML8: case DASM_IMML8:
case DASM_IMML12: case DASM_IMML12:
CK(n >= 0 ? ((n>>((ins>>5)&31)) == 0) : CK(n >= 0 ? ((n>>((ins>>5)&31)) == 0) :
@ -371,6 +372,7 @@ int dasm_encode(Dst_DECL, void *buffer)
break; break;
case DASM_REL_LG: case DASM_REL_LG:
CK(n >= 0, UNDEF_LG); CK(n >= 0, UNDEF_LG);
/* fallthrough */
case DASM_REL_PC: case DASM_REL_PC:
CK(n >= 0, UNDEF_PC); CK(n >= 0, UNDEF_PC);
n = *DASM_POS2PTR(D, n) - (int)((char *)cp - base) - 4; n = *DASM_POS2PTR(D, n) - (int)((char *)cp - base) - 4;

View File

@ -350,6 +350,7 @@ int dasm_encode(Dst_DECL, void *buffer)
break; break;
case DASM_REL_LG: case DASM_REL_LG:
CK(n >= 0, UNDEF_LG); CK(n >= 0, UNDEF_LG);
/* fallthrough */
case DASM_REL_PC: case DASM_REL_PC:
CK(n >= 0, UNDEF_PC); CK(n >= 0, UNDEF_PC);
n = *DASM_POS2PTR(D, n); n = *DASM_POS2PTR(D, n);

View File

@ -350,6 +350,7 @@ int dasm_encode(Dst_DECL, void *buffer)
break; break;
case DASM_REL_LG: case DASM_REL_LG:
CK(n >= 0, UNDEF_LG); CK(n >= 0, UNDEF_LG);
/* fallthrough */
case DASM_REL_PC: case DASM_REL_PC:
CK(n >= 0, UNDEF_PC); CK(n >= 0, UNDEF_PC);
n = *DASM_POS2PTR(D, n) - (int)((char *)cp - base); n = *DASM_POS2PTR(D, n) - (int)((char *)cp - base);

View File

@ -194,12 +194,13 @@ void dasm_put(Dst_DECL, int start, ...)
switch (action) { switch (action) {
case DASM_DISP: case DASM_DISP:
if (n == 0) { if ((mrm&7) == 4) mrm = p[-2]; if ((mrm&7) != 5) break; } if (n == 0) { if ((mrm&7) == 4) mrm = p[-2]; if ((mrm&7) != 5) break; }
case DASM_IMM_DB: if (((n+128)&-256) == 0) goto ob; /* fallthrough */
case DASM_IMM_DB: if (((n+128)&-256) == 0) goto ob; /* fallthrough */
case DASM_REL_A: /* Assumes ptrdiff_t is int. !x64 */ case DASM_REL_A: /* Assumes ptrdiff_t is int. !x64 */
case DASM_IMM_D: ofs += 4; break; case DASM_IMM_D: ofs += 4; break;
case DASM_IMM_S: CK(((n+128)&-256) == 0, RANGE_I); goto ob; case DASM_IMM_S: CK(((n+128)&-256) == 0, RANGE_I); goto ob;
case DASM_IMM_B: CK((n&-256) == 0, RANGE_I); ob: ofs++; break; case DASM_IMM_B: CK((n&-256) == 0, RANGE_I); ob: ofs++; break;
case DASM_IMM_WB: if (((n+128)&-256) == 0) goto ob; case DASM_IMM_WB: if (((n+128)&-256) == 0) goto ob; /* fallthrough */
case DASM_IMM_W: CK((n&-65536) == 0, RANGE_I); ofs += 2; break; case DASM_IMM_W: CK((n&-65536) == 0, RANGE_I); ofs += 2; break;
case DASM_SPACE: p++; ofs += n; break; case DASM_SPACE: p++; ofs += n; break;
case DASM_SETLABEL: b[pos-2] = -0x40000000; break; /* Neg. label ofs. */ case DASM_SETLABEL: b[pos-2] = -0x40000000; break; /* Neg. label ofs. */
@ -323,11 +324,14 @@ int dasm_link(Dst_DECL, size_t *szp)
pos += 2; pos += 2;
break; break;
} }
/* fallthrough */
case DASM_SPACE: case DASM_IMM_LG: case DASM_VREG: p++; case DASM_SPACE: case DASM_IMM_LG: case DASM_VREG: p++;
/* fallthrough */
case DASM_DISP: case DASM_IMM_S: case DASM_IMM_B: case DASM_IMM_W: case DASM_DISP: case DASM_IMM_S: case DASM_IMM_B: case DASM_IMM_W:
case DASM_IMM_D: case DASM_IMM_WB: case DASM_IMM_DB: case DASM_IMM_D: case DASM_IMM_WB: case DASM_IMM_DB:
case DASM_SETLABEL: case DASM_REL_A: case DASM_IMM_PC: pos++; break; case DASM_SETLABEL: case DASM_REL_A: case DASM_IMM_PC: pos++; break;
case DASM_LABEL_LG: p++; case DASM_LABEL_LG: p++;
/* fallthrough */
case DASM_LABEL_PC: b[pos++] += ofs; break; /* Fix label offset. */ case DASM_LABEL_PC: b[pos++] += ofs; break; /* Fix label offset. */
case DASM_ALIGN: ofs -= (b[pos++]+ofs)&*p++; break; /* Adjust ofs. */ case DASM_ALIGN: ofs -= (b[pos++]+ofs)&*p++; break; /* Adjust ofs. */
case DASM_EXTERN: p += 2; break; case DASM_EXTERN: p += 2; break;
@ -385,16 +389,20 @@ int dasm_encode(Dst_DECL, void *buffer)
if (mrm != 5) { mm[-1] -= 0x80; break; } } if (mrm != 5) { mm[-1] -= 0x80; break; } }
if (((n+128) & -256) != 0) goto wd; else mm[-1] -= 0x40; if (((n+128) & -256) != 0) goto wd; else mm[-1] -= 0x40;
} }
/* fallthrough */
case DASM_IMM_S: case DASM_IMM_B: wb: dasmb(n); break; case DASM_IMM_S: case DASM_IMM_B: wb: dasmb(n); break;
case DASM_IMM_DB: if (((n+128)&-256) == 0) { case DASM_IMM_DB: if (((n+128)&-256) == 0) {
db: if (!mark) mark = cp; mark[-2] += 2; mark = NULL; goto wb; db: if (!mark) mark = cp; mark[-2] += 2; mark = NULL; goto wb;
} else mark = NULL; } else mark = NULL;
/* fallthrough */
case DASM_IMM_D: wd: dasmd(n); break; case DASM_IMM_D: wd: dasmd(n); break;
case DASM_IMM_WB: if (((n+128)&-256) == 0) goto db; else mark = NULL; case DASM_IMM_WB: if (((n+128)&-256) == 0) goto db; else mark = NULL;
/* fallthrough */
case DASM_IMM_W: dasmw(n); break; case DASM_IMM_W: dasmw(n); break;
case DASM_VREG: { int t = *p++; if (t >= 2) n<<=3; cp[-1] |= n; break; } case DASM_VREG: { int t = *p++; if (t >= 2) n<<=3; cp[-1] |= n; break; }
case DASM_REL_LG: p++; if (n >= 0) goto rel_pc; case DASM_REL_LG: p++; if (n >= 0) goto rel_pc;
b++; n = (int)(ptrdiff_t)D->globals[-n]; b++; n = (int)(ptrdiff_t)D->globals[-n];
/* fallthrough */
case DASM_REL_A: rel_a: case DASM_REL_A: rel_a:
n -= (unsigned int)(ptrdiff_t)(cp+4); goto wd; /* !x64 */ n -= (unsigned int)(ptrdiff_t)(cp+4); goto wd; /* !x64 */
case DASM_REL_PC: rel_pc: { case DASM_REL_PC: rel_pc: {
@ -407,6 +415,7 @@ int dasm_encode(Dst_DECL, void *buffer)
} }
case DASM_IMM_LG: case DASM_IMM_LG:
p++; if (n < 0) { n = (int)(ptrdiff_t)D->globals[-n]; goto wd; } p++; if (n < 0) { n = (int)(ptrdiff_t)D->globals[-n]; goto wd; }
/* fallthrough */
case DASM_IMM_PC: { case DASM_IMM_PC: {
int *pb = DASM_POS2PTR(D, n); int *pb = DASM_POS2PTR(D, n);
n = *pb < 0 ? pb[1] : (*pb + (int)(ptrdiff_t)base); n = *pb < 0 ? pb[1] : (*pb + (int)(ptrdiff_t)base);
@ -427,6 +436,7 @@ int dasm_encode(Dst_DECL, void *buffer)
case DASM_EXTERN: n = DASM_EXTERN(Dst, cp, p[1], *p); p += 2; goto wd; case DASM_EXTERN: n = DASM_EXTERN(Dst, cp, p[1], *p); p += 2; goto wd;
case DASM_MARK: mark = cp; break; case DASM_MARK: mark = cp; break;
case DASM_ESC: action = *p++; case DASM_ESC: action = *p++;
/* fallthrough */
default: *cp++ = action; break; default: *cp++ = action; break;
case DASM_SECTION: case DASM_STOP: goto stop; case DASM_SECTION: case DASM_STOP: goto stop;
} }

View File

@ -1725,6 +1725,7 @@ static void asm_setup_regsp(ASMState *as)
case IR_SNEW: case IR_XSNEW: case IR_NEWREF: case IR_SNEW: case IR_XSNEW: case IR_NEWREF:
if (REGARG_NUMGPR < 3 && as->evenspill < 3) if (REGARG_NUMGPR < 3 && as->evenspill < 3)
as->evenspill = 3; /* lj_str_new and lj_tab_newkey need 3 args. */ as->evenspill = 3; /* lj_str_new and lj_tab_newkey need 3 args. */
/* fallthrough */
case IR_TNEW: case IR_TDUP: case IR_CNEW: case IR_CNEWI: case IR_TOSTR: case IR_TNEW: case IR_TDUP: case IR_CNEW: case IR_CNEWI: case IR_TOSTR:
ir->prev = REGSP_HINT(RID_RET); ir->prev = REGSP_HINT(RID_RET);
if (inloop) if (inloop)
@ -1750,7 +1751,7 @@ static void asm_setup_regsp(ASMState *as)
#endif #endif
continue; continue;
} }
/* fallthrough for integer POW */ /* fallthrough */ /* for integer POW */
case IR_DIV: case IR_MOD: case IR_DIV: case IR_MOD:
if (!irt_isnum(ir->t)) { if (!irt_isnum(ir->t)) {
ir->prev = REGSP_HINT(RID_RET); ir->prev = REGSP_HINT(RID_RET);

View File

@ -590,28 +590,34 @@ static void cp_expr_infix(CPState *cp, CPValue *k, int pri)
k->id = k2.id > k3.id ? k2.id : k3.id; k->id = k2.id > k3.id ? k2.id : k3.id;
continue; continue;
} }
/* fallthrough */
case 1: case 1:
if (cp_opt(cp, CTOK_OROR)) { if (cp_opt(cp, CTOK_OROR)) {
cp_expr_sub(cp, &k2, 2); k->i32 = k->u32 || k2.u32; k->id = CTID_INT32; cp_expr_sub(cp, &k2, 2); k->i32 = k->u32 || k2.u32; k->id = CTID_INT32;
continue; continue;
} }
/* fallthrough */
case 2: case 2:
if (cp_opt(cp, CTOK_ANDAND)) { if (cp_opt(cp, CTOK_ANDAND)) {
cp_expr_sub(cp, &k2, 3); k->i32 = k->u32 && k2.u32; k->id = CTID_INT32; cp_expr_sub(cp, &k2, 3); k->i32 = k->u32 && k2.u32; k->id = CTID_INT32;
continue; continue;
} }
/* fallthrough */
case 3: case 3:
if (cp_opt(cp, '|')) { if (cp_opt(cp, '|')) {
cp_expr_sub(cp, &k2, 4); k->u32 = k->u32 | k2.u32; goto arith_result; cp_expr_sub(cp, &k2, 4); k->u32 = k->u32 | k2.u32; goto arith_result;
} }
/* fallthrough */
case 4: case 4:
if (cp_opt(cp, '^')) { if (cp_opt(cp, '^')) {
cp_expr_sub(cp, &k2, 5); k->u32 = k->u32 ^ k2.u32; goto arith_result; cp_expr_sub(cp, &k2, 5); k->u32 = k->u32 ^ k2.u32; goto arith_result;
} }
/* fallthrough */
case 5: case 5:
if (cp_opt(cp, '&')) { if (cp_opt(cp, '&')) {
cp_expr_sub(cp, &k2, 6); k->u32 = k->u32 & k2.u32; goto arith_result; cp_expr_sub(cp, &k2, 6); k->u32 = k->u32 & k2.u32; goto arith_result;
} }
/* fallthrough */
case 6: case 6:
if (cp_opt(cp, CTOK_EQ)) { if (cp_opt(cp, CTOK_EQ)) {
cp_expr_sub(cp, &k2, 7); k->i32 = k->u32 == k2.u32; k->id = CTID_INT32; cp_expr_sub(cp, &k2, 7); k->i32 = k->u32 == k2.u32; k->id = CTID_INT32;
@ -620,6 +626,7 @@ static void cp_expr_infix(CPState *cp, CPValue *k, int pri)
cp_expr_sub(cp, &k2, 7); k->i32 = k->u32 != k2.u32; k->id = CTID_INT32; cp_expr_sub(cp, &k2, 7); k->i32 = k->u32 != k2.u32; k->id = CTID_INT32;
continue; continue;
} }
/* fallthrough */
case 7: case 7:
if (cp_opt(cp, '<')) { if (cp_opt(cp, '<')) {
cp_expr_sub(cp, &k2, 8); cp_expr_sub(cp, &k2, 8);
@ -654,6 +661,7 @@ static void cp_expr_infix(CPState *cp, CPValue *k, int pri)
k->id = CTID_INT32; k->id = CTID_INT32;
continue; continue;
} }
/* fallthrough */
case 8: case 8:
if (cp_opt(cp, CTOK_SHL)) { if (cp_opt(cp, CTOK_SHL)) {
cp_expr_sub(cp, &k2, 9); k->u32 = k->u32 << k2.u32; cp_expr_sub(cp, &k2, 9); k->u32 = k->u32 << k2.u32;
@ -666,6 +674,7 @@ static void cp_expr_infix(CPState *cp, CPValue *k, int pri)
k->u32 = k->u32 >> k2.u32; k->u32 = k->u32 >> k2.u32;
continue; continue;
} }
/* fallthrough */
case 9: case 9:
if (cp_opt(cp, '+')) { if (cp_opt(cp, '+')) {
cp_expr_sub(cp, &k2, 10); k->u32 = k->u32 + k2.u32; cp_expr_sub(cp, &k2, 10); k->u32 = k->u32 + k2.u32;
@ -675,6 +684,7 @@ static void cp_expr_infix(CPState *cp, CPValue *k, int pri)
} else if (cp_opt(cp, '-')) { } else if (cp_opt(cp, '-')) {
cp_expr_sub(cp, &k2, 10); k->u32 = k->u32 - k2.u32; goto arith_result; cp_expr_sub(cp, &k2, 10); k->u32 = k->u32 - k2.u32; goto arith_result;
} }
/* fallthrough */
case 10: case 10:
if (cp_opt(cp, '*')) { if (cp_opt(cp, '*')) {
cp_expr_unary(cp, &k2); k->u32 = k->u32 * k2.u32; goto arith_result; cp_expr_unary(cp, &k2); k->u32 = k->u32 * k2.u32; goto arith_result;

View File

@ -153,6 +153,7 @@ static void *err_unwind(lua_State *L, void *stopcf, int errcode)
if ((frame-1)->u32.lo == LJ_CONT_FFI_CALLBACK) if ((frame-1)->u32.lo == LJ_CONT_FFI_CALLBACK)
goto unwind_c; goto unwind_c;
#endif #endif
/* fallthrough */
case FRAME_VARG: /* Vararg frame. */ case FRAME_VARG: /* Vararg frame. */
frame = frame_prevd(frame); frame = frame_prevd(frame);
break; break;

View File

@ -100,8 +100,8 @@ static void sink_mark_ins(jit_State *J)
(LJ_32 && ir+1 < irlast && (ir+1)->o == IR_HIOP && (LJ_32 && ir+1 < irlast && (ir+1)->o == IR_HIOP &&
!sink_checkphi(J, ir, (ir+1)->op2)))) !sink_checkphi(J, ir, (ir+1)->op2))))
irt_setmark(ir->t); /* Mark ineligible allocation. */ irt_setmark(ir->t); /* Mark ineligible allocation. */
/* fallthrough */
#endif #endif
/* fallthrough */
case IR_USTORE: case IR_USTORE:
irt_setmark(IR(ir->op2)->t); /* Mark stored value. */ irt_setmark(IR(ir->op2)->t); /* Mark stored value. */
break; break;

View File

@ -2696,7 +2696,8 @@ static int parse_stmt(LexState *ls)
lj_lex_next(ls); lj_lex_next(ls);
parse_goto(ls); parse_goto(ls);
break; break;
} /* else: fallthrough */ }
/* fallthrough */
default: default:
parse_call_assign(ls); parse_call_assign(ls);
break; break;

View File

@ -419,6 +419,7 @@ static int collectargs(char **argv, int *flags)
break; break;
case 'e': case 'e':
*flags |= FLAGS_EXEC; *flags |= FLAGS_EXEC;
/* fallthrough */
case 'j': /* LuaJIT extension */ case 'j': /* LuaJIT extension */
case 'l': case 'l':
*flags |= FLAGS_OPTION; *flags |= FLAGS_OPTION;