aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2018-01-29 13:06:13 +0100
committerMike Pall <mike>2018-01-29 13:06:13 +0100
commitd4ee80342770d1281e2ce877f8ae8ab1d99e6528 (patch)
treecd8db1f5da7f2bfbecc4092f2646665128dad227
parentb03a56f28ec360bbcf43091afd0607890a4a33c7 (diff)
downloadluajit-d4ee80342770d1281e2ce877f8ae8ab1d99e6528.tar.gz
luajit-d4ee80342770d1281e2ce877f8ae8ab1d99e6528.tar.bz2
luajit-d4ee80342770d1281e2ce877f8ae8ab1d99e6528.zip
Fix GCC 7 -Wimplicit-fallthrough warnings.
-rw-r--r--dynasm/dasm_arm.h2
-rw-r--r--dynasm/dasm_mips.h1
-rw-r--r--dynasm/dasm_ppc.h1
-rw-r--r--dynasm/dasm_x86.h14
-rw-r--r--src/lj_asm.c3
-rw-r--r--src/lj_cparse.c10
-rw-r--r--src/lj_err.c1
-rw-r--r--src/lj_opt_sink.c2
-rw-r--r--src/lj_parse.c3
-rw-r--r--src/luajit.c1
10 files changed, 33 insertions, 5 deletions
diff --git a/dynasm/dasm_arm.h b/dynasm/dasm_arm.h
index a43f7c66..1d404ccd 100644
--- a/dynasm/dasm_arm.h
+++ b/dynasm/dasm_arm.h
@@ -254,6 +254,7 @@ void dasm_put(Dst_DECL, int start, ...)
254 case DASM_IMMV8: 254 case DASM_IMMV8:
255 CK((n & 3) == 0, RANGE_I); 255 CK((n & 3) == 0, RANGE_I);
256 n >>= 2; 256 n >>= 2;
257 /* fallthrough */
257 case DASM_IMML8: 258 case DASM_IMML8:
258 case DASM_IMML12: 259 case DASM_IMML12:
259 CK(n >= 0 ? ((n>>((ins>>5)&31)) == 0) : 260 CK(n >= 0 ? ((n>>((ins>>5)&31)) == 0) :
@@ -371,6 +372,7 @@ int dasm_encode(Dst_DECL, void *buffer)
371 break; 372 break;
372 case DASM_REL_LG: 373 case DASM_REL_LG:
373 CK(n >= 0, UNDEF_LG); 374 CK(n >= 0, UNDEF_LG);
375 /* fallthrough */
374 case DASM_REL_PC: 376 case DASM_REL_PC:
375 CK(n >= 0, UNDEF_PC); 377 CK(n >= 0, UNDEF_PC);
376 n = *DASM_POS2PTR(D, n) - (int)((char *)cp - base) - 4; 378 n = *DASM_POS2PTR(D, n) - (int)((char *)cp - base) - 4;
diff --git a/dynasm/dasm_mips.h b/dynasm/dasm_mips.h
index 7eac6694..46af0349 100644
--- a/dynasm/dasm_mips.h
+++ b/dynasm/dasm_mips.h
@@ -350,6 +350,7 @@ int dasm_encode(Dst_DECL, void *buffer)
350 break; 350 break;
351 case DASM_REL_LG: 351 case DASM_REL_LG:
352 CK(n >= 0, UNDEF_LG); 352 CK(n >= 0, UNDEF_LG);
353 /* fallthrough */
353 case DASM_REL_PC: 354 case DASM_REL_PC:
354 CK(n >= 0, UNDEF_PC); 355 CK(n >= 0, UNDEF_PC);
355 n = *DASM_POS2PTR(D, n); 356 n = *DASM_POS2PTR(D, n);
diff --git a/dynasm/dasm_ppc.h b/dynasm/dasm_ppc.h
index 61103612..81b9a76b 100644
--- a/dynasm/dasm_ppc.h
+++ b/dynasm/dasm_ppc.h
@@ -350,6 +350,7 @@ int dasm_encode(Dst_DECL, void *buffer)
350 break; 350 break;
351 case DASM_REL_LG: 351 case DASM_REL_LG:
352 CK(n >= 0, UNDEF_LG); 352 CK(n >= 0, UNDEF_LG);
353 /* fallthrough */
353 case DASM_REL_PC: 354 case DASM_REL_PC:
354 CK(n >= 0, UNDEF_PC); 355 CK(n >= 0, UNDEF_PC);
355 n = *DASM_POS2PTR(D, n) - (int)((char *)cp - base); 356 n = *DASM_POS2PTR(D, n) - (int)((char *)cp - base);
diff --git a/dynasm/dasm_x86.h b/dynasm/dasm_x86.h
index f9260b0c..8ae911df 100644
--- a/dynasm/dasm_x86.h
+++ b/dynasm/dasm_x86.h
@@ -194,12 +194,13 @@ void dasm_put(Dst_DECL, int start, ...)
194 switch (action) { 194 switch (action) {
195 case DASM_DISP: 195 case DASM_DISP:
196 if (n == 0) { if ((mrm&7) == 4) mrm = p[-2]; if ((mrm&7) != 5) break; } 196 if (n == 0) { if ((mrm&7) == 4) mrm = p[-2]; if ((mrm&7) != 5) break; }
197 case DASM_IMM_DB: if (((n+128)&-256) == 0) goto ob; 197 /* fallthrough */
198 case DASM_IMM_DB: if (((n+128)&-256) == 0) goto ob; /* fallthrough */
198 case DASM_REL_A: /* Assumes ptrdiff_t is int. !x64 */ 199 case DASM_REL_A: /* Assumes ptrdiff_t is int. !x64 */
199 case DASM_IMM_D: ofs += 4; break; 200 case DASM_IMM_D: ofs += 4; break;
200 case DASM_IMM_S: CK(((n+128)&-256) == 0, RANGE_I); goto ob; 201 case DASM_IMM_S: CK(((n+128)&-256) == 0, RANGE_I); goto ob;
201 case DASM_IMM_B: CK((n&-256) == 0, RANGE_I); ob: ofs++; break; 202 case DASM_IMM_B: CK((n&-256) == 0, RANGE_I); ob: ofs++; break;
202 case DASM_IMM_WB: if (((n+128)&-256) == 0) goto ob; 203 case DASM_IMM_WB: if (((n+128)&-256) == 0) goto ob; /* fallthrough */
203 case DASM_IMM_W: CK((n&-65536) == 0, RANGE_I); ofs += 2; break; 204 case DASM_IMM_W: CK((n&-65536) == 0, RANGE_I); ofs += 2; break;
204 case DASM_SPACE: p++; ofs += n; break; 205 case DASM_SPACE: p++; ofs += n; break;
205 case DASM_SETLABEL: b[pos-2] = -0x40000000; break; /* Neg. label ofs. */ 206 case DASM_SETLABEL: b[pos-2] = -0x40000000; break; /* Neg. label ofs. */
@@ -323,11 +324,14 @@ int dasm_link(Dst_DECL, size_t *szp)
323 pos += 2; 324 pos += 2;
324 break; 325 break;
325 } 326 }
327 /* fallthrough */
326 case DASM_SPACE: case DASM_IMM_LG: case DASM_VREG: p++; 328 case DASM_SPACE: case DASM_IMM_LG: case DASM_VREG: p++;
329 /* fallthrough */
327 case DASM_DISP: case DASM_IMM_S: case DASM_IMM_B: case DASM_IMM_W: 330 case DASM_DISP: case DASM_IMM_S: case DASM_IMM_B: case DASM_IMM_W:
328 case DASM_IMM_D: case DASM_IMM_WB: case DASM_IMM_DB: 331 case DASM_IMM_D: case DASM_IMM_WB: case DASM_IMM_DB:
329 case DASM_SETLABEL: case DASM_REL_A: case DASM_IMM_PC: pos++; break; 332 case DASM_SETLABEL: case DASM_REL_A: case DASM_IMM_PC: pos++; break;
330 case DASM_LABEL_LG: p++; 333 case DASM_LABEL_LG: p++;
334 /* fallthrough */
331 case DASM_LABEL_PC: b[pos++] += ofs; break; /* Fix label offset. */ 335 case DASM_LABEL_PC: b[pos++] += ofs; break; /* Fix label offset. */
332 case DASM_ALIGN: ofs -= (b[pos++]+ofs)&*p++; break; /* Adjust ofs. */ 336 case DASM_ALIGN: ofs -= (b[pos++]+ofs)&*p++; break; /* Adjust ofs. */
333 case DASM_EXTERN: p += 2; break; 337 case DASM_EXTERN: p += 2; break;
@@ -385,16 +389,20 @@ int dasm_encode(Dst_DECL, void *buffer)
385 if (mrm != 5) { mm[-1] -= 0x80; break; } } 389 if (mrm != 5) { mm[-1] -= 0x80; break; } }
386 if (((n+128) & -256) != 0) goto wd; else mm[-1] -= 0x40; 390 if (((n+128) & -256) != 0) goto wd; else mm[-1] -= 0x40;
387 } 391 }
392 /* fallthrough */
388 case DASM_IMM_S: case DASM_IMM_B: wb: dasmb(n); break; 393 case DASM_IMM_S: case DASM_IMM_B: wb: dasmb(n); break;
389 case DASM_IMM_DB: if (((n+128)&-256) == 0) { 394 case DASM_IMM_DB: if (((n+128)&-256) == 0) {
390 db: if (!mark) mark = cp; mark[-2] += 2; mark = NULL; goto wb; 395 db: if (!mark) mark = cp; mark[-2] += 2; mark = NULL; goto wb;
391 } else mark = NULL; 396 } else mark = NULL;
397 /* fallthrough */
392 case DASM_IMM_D: wd: dasmd(n); break; 398 case DASM_IMM_D: wd: dasmd(n); break;
393 case DASM_IMM_WB: if (((n+128)&-256) == 0) goto db; else mark = NULL; 399 case DASM_IMM_WB: if (((n+128)&-256) == 0) goto db; else mark = NULL;
400 /* fallthrough */
394 case DASM_IMM_W: dasmw(n); break; 401 case DASM_IMM_W: dasmw(n); break;
395 case DASM_VREG: { int t = *p++; if (t >= 2) n<<=3; cp[-1] |= n; break; } 402 case DASM_VREG: { int t = *p++; if (t >= 2) n<<=3; cp[-1] |= n; break; }
396 case DASM_REL_LG: p++; if (n >= 0) goto rel_pc; 403 case DASM_REL_LG: p++; if (n >= 0) goto rel_pc;
397 b++; n = (int)(ptrdiff_t)D->globals[-n]; 404 b++; n = (int)(ptrdiff_t)D->globals[-n];
405 /* fallthrough */
398 case DASM_REL_A: rel_a: 406 case DASM_REL_A: rel_a:
399 n -= (unsigned int)(ptrdiff_t)(cp+4); goto wd; /* !x64 */ 407 n -= (unsigned int)(ptrdiff_t)(cp+4); goto wd; /* !x64 */
400 case DASM_REL_PC: rel_pc: { 408 case DASM_REL_PC: rel_pc: {
@@ -407,6 +415,7 @@ int dasm_encode(Dst_DECL, void *buffer)
407 } 415 }
408 case DASM_IMM_LG: 416 case DASM_IMM_LG:
409 p++; if (n < 0) { n = (int)(ptrdiff_t)D->globals[-n]; goto wd; } 417 p++; if (n < 0) { n = (int)(ptrdiff_t)D->globals[-n]; goto wd; }
418 /* fallthrough */
410 case DASM_IMM_PC: { 419 case DASM_IMM_PC: {
411 int *pb = DASM_POS2PTR(D, n); 420 int *pb = DASM_POS2PTR(D, n);
412 n = *pb < 0 ? pb[1] : (*pb + (int)(ptrdiff_t)base); 421 n = *pb < 0 ? pb[1] : (*pb + (int)(ptrdiff_t)base);
@@ -427,6 +436,7 @@ int dasm_encode(Dst_DECL, void *buffer)
427 case DASM_EXTERN: n = DASM_EXTERN(Dst, cp, p[1], *p); p += 2; goto wd; 436 case DASM_EXTERN: n = DASM_EXTERN(Dst, cp, p[1], *p); p += 2; goto wd;
428 case DASM_MARK: mark = cp; break; 437 case DASM_MARK: mark = cp; break;
429 case DASM_ESC: action = *p++; 438 case DASM_ESC: action = *p++;
439 /* fallthrough */
430 default: *cp++ = action; break; 440 default: *cp++ = action; break;
431 case DASM_SECTION: case DASM_STOP: goto stop; 441 case DASM_SECTION: case DASM_STOP: goto stop;
432 } 442 }
diff --git a/src/lj_asm.c b/src/lj_asm.c
index 02714d4e..dd7186f6 100644
--- a/src/lj_asm.c
+++ b/src/lj_asm.c
@@ -1725,6 +1725,7 @@ static void asm_setup_regsp(ASMState *as)
1725 case IR_SNEW: case IR_XSNEW: case IR_NEWREF: 1725 case IR_SNEW: case IR_XSNEW: case IR_NEWREF:
1726 if (REGARG_NUMGPR < 3 && as->evenspill < 3) 1726 if (REGARG_NUMGPR < 3 && as->evenspill < 3)
1727 as->evenspill = 3; /* lj_str_new and lj_tab_newkey need 3 args. */ 1727 as->evenspill = 3; /* lj_str_new and lj_tab_newkey need 3 args. */
1728 /* fallthrough */
1728 case IR_TNEW: case IR_TDUP: case IR_CNEW: case IR_CNEWI: case IR_TOSTR: 1729 case IR_TNEW: case IR_TDUP: case IR_CNEW: case IR_CNEWI: case IR_TOSTR:
1729 ir->prev = REGSP_HINT(RID_RET); 1730 ir->prev = REGSP_HINT(RID_RET);
1730 if (inloop) 1731 if (inloop)
@@ -1750,7 +1751,7 @@ static void asm_setup_regsp(ASMState *as)
1750#endif 1751#endif
1751 continue; 1752 continue;
1752 } 1753 }
1753 /* fallthrough for integer POW */ 1754 /* fallthrough */ /* for integer POW */
1754 case IR_DIV: case IR_MOD: 1755 case IR_DIV: case IR_MOD:
1755 if (!irt_isnum(ir->t)) { 1756 if (!irt_isnum(ir->t)) {
1756 ir->prev = REGSP_HINT(RID_RET); 1757 ir->prev = REGSP_HINT(RID_RET);
diff --git a/src/lj_cparse.c b/src/lj_cparse.c
index 2ba50a72..f111537d 100644
--- a/src/lj_cparse.c
+++ b/src/lj_cparse.c
@@ -590,28 +590,34 @@ static void cp_expr_infix(CPState *cp, CPValue *k, int pri)
590 k->id = k2.id > k3.id ? k2.id : k3.id; 590 k->id = k2.id > k3.id ? k2.id : k3.id;
591 continue; 591 continue;
592 } 592 }
593 /* fallthrough */
593 case 1: 594 case 1:
594 if (cp_opt(cp, CTOK_OROR)) { 595 if (cp_opt(cp, CTOK_OROR)) {
595 cp_expr_sub(cp, &k2, 2); k->i32 = k->u32 || k2.u32; k->id = CTID_INT32; 596 cp_expr_sub(cp, &k2, 2); k->i32 = k->u32 || k2.u32; k->id = CTID_INT32;
596 continue; 597 continue;
597 } 598 }
599 /* fallthrough */
598 case 2: 600 case 2:
599 if (cp_opt(cp, CTOK_ANDAND)) { 601 if (cp_opt(cp, CTOK_ANDAND)) {
600 cp_expr_sub(cp, &k2, 3); k->i32 = k->u32 && k2.u32; k->id = CTID_INT32; 602 cp_expr_sub(cp, &k2, 3); k->i32 = k->u32 && k2.u32; k->id = CTID_INT32;
601 continue; 603 continue;
602 } 604 }
605 /* fallthrough */
603 case 3: 606 case 3:
604 if (cp_opt(cp, '|')) { 607 if (cp_opt(cp, '|')) {
605 cp_expr_sub(cp, &k2, 4); k->u32 = k->u32 | k2.u32; goto arith_result; 608 cp_expr_sub(cp, &k2, 4); k->u32 = k->u32 | k2.u32; goto arith_result;
606 } 609 }
610 /* fallthrough */
607 case 4: 611 case 4:
608 if (cp_opt(cp, '^')) { 612 if (cp_opt(cp, '^')) {
609 cp_expr_sub(cp, &k2, 5); k->u32 = k->u32 ^ k2.u32; goto arith_result; 613 cp_expr_sub(cp, &k2, 5); k->u32 = k->u32 ^ k2.u32; goto arith_result;
610 } 614 }
615 /* fallthrough */
611 case 5: 616 case 5:
612 if (cp_opt(cp, '&')) { 617 if (cp_opt(cp, '&')) {
613 cp_expr_sub(cp, &k2, 6); k->u32 = k->u32 & k2.u32; goto arith_result; 618 cp_expr_sub(cp, &k2, 6); k->u32 = k->u32 & k2.u32; goto arith_result;
614 } 619 }
620 /* fallthrough */
615 case 6: 621 case 6:
616 if (cp_opt(cp, CTOK_EQ)) { 622 if (cp_opt(cp, CTOK_EQ)) {
617 cp_expr_sub(cp, &k2, 7); k->i32 = k->u32 == k2.u32; k->id = CTID_INT32; 623 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)
620 cp_expr_sub(cp, &k2, 7); k->i32 = k->u32 != k2.u32; k->id = CTID_INT32; 626 cp_expr_sub(cp, &k2, 7); k->i32 = k->u32 != k2.u32; k->id = CTID_INT32;
621 continue; 627 continue;
622 } 628 }
629 /* fallthrough */
623 case 7: 630 case 7:
624 if (cp_opt(cp, '<')) { 631 if (cp_opt(cp, '<')) {
625 cp_expr_sub(cp, &k2, 8); 632 cp_expr_sub(cp, &k2, 8);
@@ -654,6 +661,7 @@ static void cp_expr_infix(CPState *cp, CPValue *k, int pri)
654 k->id = CTID_INT32; 661 k->id = CTID_INT32;
655 continue; 662 continue;
656 } 663 }
664 /* fallthrough */
657 case 8: 665 case 8:
658 if (cp_opt(cp, CTOK_SHL)) { 666 if (cp_opt(cp, CTOK_SHL)) {
659 cp_expr_sub(cp, &k2, 9); k->u32 = k->u32 << k2.u32; 667 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)
666 k->u32 = k->u32 >> k2.u32; 674 k->u32 = k->u32 >> k2.u32;
667 continue; 675 continue;
668 } 676 }
677 /* fallthrough */
669 case 9: 678 case 9:
670 if (cp_opt(cp, '+')) { 679 if (cp_opt(cp, '+')) {
671 cp_expr_sub(cp, &k2, 10); k->u32 = k->u32 + k2.u32; 680 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)
675 } else if (cp_opt(cp, '-')) { 684 } else if (cp_opt(cp, '-')) {
676 cp_expr_sub(cp, &k2, 10); k->u32 = k->u32 - k2.u32; goto arith_result; 685 cp_expr_sub(cp, &k2, 10); k->u32 = k->u32 - k2.u32; goto arith_result;
677 } 686 }
687 /* fallthrough */
678 case 10: 688 case 10:
679 if (cp_opt(cp, '*')) { 689 if (cp_opt(cp, '*')) {
680 cp_expr_unary(cp, &k2); k->u32 = k->u32 * k2.u32; goto arith_result; 690 cp_expr_unary(cp, &k2); k->u32 = k->u32 * k2.u32; goto arith_result;
diff --git a/src/lj_err.c b/src/lj_err.c
index 54f42c37..13a1ded7 100644
--- a/src/lj_err.c
+++ b/src/lj_err.c
@@ -153,6 +153,7 @@ static void *err_unwind(lua_State *L, void *stopcf, int errcode)
153 if ((frame-1)->u32.lo == LJ_CONT_FFI_CALLBACK) 153 if ((frame-1)->u32.lo == LJ_CONT_FFI_CALLBACK)
154 goto unwind_c; 154 goto unwind_c;
155#endif 155#endif
156 /* fallthrough */
156 case FRAME_VARG: /* Vararg frame. */ 157 case FRAME_VARG: /* Vararg frame. */
157 frame = frame_prevd(frame); 158 frame = frame_prevd(frame);
158 break; 159 break;
diff --git a/src/lj_opt_sink.c b/src/lj_opt_sink.c
index 6a00d04c..4efe395e 100644
--- a/src/lj_opt_sink.c
+++ b/src/lj_opt_sink.c
@@ -100,8 +100,8 @@ static void sink_mark_ins(jit_State *J)
100 (LJ_32 && ir+1 < irlast && (ir+1)->o == IR_HIOP && 100 (LJ_32 && ir+1 < irlast && (ir+1)->o == IR_HIOP &&
101 !sink_checkphi(J, ir, (ir+1)->op2)))) 101 !sink_checkphi(J, ir, (ir+1)->op2))))
102 irt_setmark(ir->t); /* Mark ineligible allocation. */ 102 irt_setmark(ir->t); /* Mark ineligible allocation. */
103 /* fallthrough */
104#endif 103#endif
104 /* fallthrough */
105 case IR_USTORE: 105 case IR_USTORE:
106 irt_setmark(IR(ir->op2)->t); /* Mark stored value. */ 106 irt_setmark(IR(ir->op2)->t); /* Mark stored value. */
107 break; 107 break;
diff --git a/src/lj_parse.c b/src/lj_parse.c
index 9e5976f7..67854951 100644
--- a/src/lj_parse.c
+++ b/src/lj_parse.c
@@ -2696,7 +2696,8 @@ static int parse_stmt(LexState *ls)
2696 lj_lex_next(ls); 2696 lj_lex_next(ls);
2697 parse_goto(ls); 2697 parse_goto(ls);
2698 break; 2698 break;
2699 } /* else: fallthrough */ 2699 }
2700 /* fallthrough */
2700 default: 2701 default:
2701 parse_call_assign(ls); 2702 parse_call_assign(ls);
2702 break; 2703 break;
diff --git a/src/luajit.c b/src/luajit.c
index 9e15b26d..0e18dc5f 100644
--- a/src/luajit.c
+++ b/src/luajit.c
@@ -419,6 +419,7 @@ static int collectargs(char **argv, int *flags)
419 break; 419 break;
420 case 'e': 420 case 'e':
421 *flags |= FLAGS_EXEC; 421 *flags |= FLAGS_EXEC;
422 /* fallthrough */
422 case 'j': /* LuaJIT extension */ 423 case 'j': /* LuaJIT extension */
423 case 'l': 424 case 'l':
424 *flags |= FLAGS_OPTION; 425 *flags |= FLAGS_OPTION;