Blame SOURCES/0032-Fix-GCC-7-Wimplicit-fallthrough-warnings.patch

006bc1
commit 0bf46e1edf94c43795b5e491efe682ab70974ce7
006bc1
Merge: 74c544d d4ee803
006bc1
Author: Mike Pall <mike>
006bc1
Date:   Mon Jan 29 13:19:30 2018 +0100
006bc1
006bc1
    Merge branch 'master' into v2.1
006bc1
006bc1
From d4ee80342770d1281e2ce877f8ae8ab1d99e6528 Mon Sep 17 00:00:00 2001
006bc1
From: Mike Pall <mike>
006bc1
Date: Mon, 29 Jan 2018 13:06:13 +0100
006bc1
Subject: [PATCH 32/72] Fix GCC 7 -Wimplicit-fallthrough warnings.
006bc1
006bc1
---
006bc1
 dynasm/dasm_arm.h  |  2 ++
006bc1
 dynasm/dasm_mips.h |  1 +
006bc1
 dynasm/dasm_ppc.h  |  1 +
006bc1
 dynasm/dasm_x86.h  | 14 ++++++++++++--
006bc1
 src/lj_asm.c       |  3 ++-
006bc1
 src/lj_cparse.c    | 10 ++++++++++
006bc1
 src/lj_err.c       |  1 +
006bc1
 src/lj_opt_sink.c  |  2 +-
006bc1
 src/lj_parse.c     |  3 ++-
006bc1
 src/luajit.c       |  1 +
006bc1
 10 files changed, 33 insertions(+), 5 deletions(-)
006bc1
006bc1
diff --git a/dynasm/dasm_arm.h b/dynasm/dasm_arm.h
006bc1
index a43f7c6..1d404cc 100644
006bc1
--- a/dynasm/dasm_arm.h
006bc1
+++ b/dynasm/dasm_arm.h
006bc1
@@ -254,6 +254,7 @@ void dasm_put(Dst_DECL, int start, ...)
006bc1
       case DASM_IMMV8:
006bc1
 	CK((n & 3) == 0, RANGE_I);
006bc1
 	n >>= 2;
006bc1
+	/* fallthrough */
006bc1
       case DASM_IMML8:
006bc1
       case DASM_IMML12:
006bc1
 	CK(n >= 0 ? ((n>>((ins>>5)&31)) == 0) :
006bc1
@@ -371,6 +372,7 @@ int dasm_encode(Dst_DECL, void *buffer)
006bc1
 	  break;
006bc1
 	case DASM_REL_LG:
006bc1
 	  CK(n >= 0, UNDEF_LG);
006bc1
+	  /* fallthrough */
006bc1
 	case DASM_REL_PC:
006bc1
 	  CK(n >= 0, UNDEF_PC);
006bc1
 	  n = *DASM_POS2PTR(D, n) - (int)((char *)cp - base) - 4;
006bc1
diff --git a/dynasm/dasm_mips.h b/dynasm/dasm_mips.h
006bc1
index 7eac669..46af034 100644
006bc1
--- a/dynasm/dasm_mips.h
006bc1
+++ b/dynasm/dasm_mips.h
006bc1
@@ -350,6 +350,7 @@ int dasm_encode(Dst_DECL, void *buffer)
006bc1
 	  break;
006bc1
 	case DASM_REL_LG:
006bc1
 	  CK(n >= 0, UNDEF_LG);
006bc1
+	  /* fallthrough */
006bc1
 	case DASM_REL_PC:
006bc1
 	  CK(n >= 0, UNDEF_PC);
006bc1
 	  n = *DASM_POS2PTR(D, n);
006bc1
diff --git a/dynasm/dasm_ppc.h b/dynasm/dasm_ppc.h
006bc1
index 6110361..81b9a76 100644
006bc1
--- a/dynasm/dasm_ppc.h
006bc1
+++ b/dynasm/dasm_ppc.h
006bc1
@@ -350,6 +350,7 @@ int dasm_encode(Dst_DECL, void *buffer)
006bc1
 	  break;
006bc1
 	case DASM_REL_LG:
006bc1
 	  CK(n >= 0, UNDEF_LG);
006bc1
+	  /* fallthrough */
006bc1
 	case DASM_REL_PC:
006bc1
 	  CK(n >= 0, UNDEF_PC);
006bc1
 	  n = *DASM_POS2PTR(D, n) - (int)((char *)cp - base);
006bc1
diff --git a/dynasm/dasm_x86.h b/dynasm/dasm_x86.h
006bc1
index f9260b0..8ae911d 100644
006bc1
--- a/dynasm/dasm_x86.h
006bc1
+++ b/dynasm/dasm_x86.h
006bc1
@@ -194,12 +194,13 @@ void dasm_put(Dst_DECL, int start, ...)
006bc1
       switch (action) {
006bc1
       case DASM_DISP:
006bc1
 	if (n == 0) { if (mrm < 0) mrm = p[-2]; if ((mrm&7) != 5) break; }
006bc1
-      case DASM_IMM_DB: if (((n+128)&-256) == 0) goto ob;
006bc1
+	/* fallthrough */
006bc1
+      case DASM_IMM_DB: if (((n+128)&-256) == 0) goto ob; /* fallthrough */
006bc1
       case DASM_REL_A: /* Assumes ptrdiff_t is int. !x64 */
006bc1
       case DASM_IMM_D: ofs += 4; break;
006bc1
       case DASM_IMM_S: CK(((n+128)&-256) == 0, RANGE_I); goto ob;
006bc1
       case DASM_IMM_B: CK((n&-256) == 0, RANGE_I); ob: ofs++; break;
006bc1
-      case DASM_IMM_WB: if (((n+128)&-256) == 0) goto ob;
006bc1
+      case DASM_IMM_WB: if (((n+128)&-256) == 0) goto ob; /* fallthrough */
006bc1
       case DASM_IMM_W: CK((n&-65536) == 0, RANGE_I); ofs += 2; break;
006bc1
       case DASM_SPACE: p++; ofs += n; break;
006bc1
       case DASM_SETLABEL: b[pos-2] = -0x40000000; break;  /* Neg. label ofs. */
006bc1
@@ -323,11 +324,14 @@ int dasm_link(Dst_DECL, size_t *szp)
006bc1
 	  pos += 2;
006bc1
 	  break;
006bc1
 	}
006bc1
+	  /* fallthrough */
006bc1
 	case DASM_SPACE: case DASM_IMM_LG: case DASM_VREG: p++;
006bc1
+	  /* fallthrough */
006bc1
 	case DASM_DISP: case DASM_IMM_S: case DASM_IMM_B: case DASM_IMM_W:
006bc1
 	case DASM_IMM_D: case DASM_IMM_WB: case DASM_IMM_DB:
006bc1
 	case DASM_SETLABEL: case DASM_REL_A: case DASM_IMM_PC: pos++; break;
006bc1
 	case DASM_LABEL_LG: p++;
006bc1
+	  /* fallthrough */
006bc1
 	case DASM_LABEL_PC: b[pos++] += ofs; break; /* Fix label offset. */
006bc1
 	case DASM_ALIGN: ofs -= (b[pos++]+ofs)&*p++; break; /* Adjust ofs. */
006bc1
 	case DASM_EXTERN: p += 2; break;
006bc1
@@ -385,12 +389,15 @@ int dasm_encode(Dst_DECL, void *buffer)
006bc1
 	    if (mrm != 5) { mm[-1] -= 0x80; break; } }
006bc1
 	  if (((n+128) & -256) != 0) goto wd; else mm[-1] -= 0x40;
006bc1
 	}
006bc1
+	  /* fallthrough */
006bc1
 	case DASM_IMM_S: case DASM_IMM_B: wb: dasmb(n); break;
006bc1
 	case DASM_IMM_DB: if (((n+128)&-256) == 0) {
006bc1
 	    db: if (!mark) mark = cp; mark[-2] += 2; mark = NULL; goto wb;
006bc1
 	  } else mark = NULL;
006bc1
+	  /* fallthrough */
006bc1
 	case DASM_IMM_D: wd: dasmd(n); break;
006bc1
 	case DASM_IMM_WB: if (((n+128)&-256) == 0) goto db; else mark = NULL;
006bc1
+	  /* fallthrough */
006bc1
 	case DASM_IMM_W: dasmw(n); break;
006bc1
 	case DASM_VREG: {
006bc1
 	  int t = *p++;
006bc1
@@ -397,6 +404,7 @@
006bc1
 	}
006bc1
 	case DASM_REL_LG: p++; if (n >= 0) goto rel_pc;
006bc1
 	  b++; n = (int)(ptrdiff_t)D->globals[-n];
006bc1
+	  /* fallthrough */
006bc1
 	case DASM_REL_A: rel_a:
006bc1
 	  n -= (unsigned int)(ptrdiff_t)(cp+4); goto wd; /* !x64 */
006bc1
 	case DASM_REL_PC: rel_pc: {
006bc1
@@ -407,6 +415,7 @@ int dasm_encode(Dst_DECL, void *buffer)
006bc1
 	}
006bc1
 	case DASM_IMM_LG:
006bc1
 	  p++; if (n < 0) { n = (int)(ptrdiff_t)D->globals[-n]; goto wd; }
006bc1
+	  /* fallthrough */
006bc1
 	case DASM_IMM_PC: {
006bc1
 	  int *pb = DASM_POS2PTR(D, n);
006bc1
 	  n = *pb < 0 ? pb[1] : (*pb + (int)(ptrdiff_t)base);
006bc1
@@ -427,6 +436,7 @@ int dasm_encode(Dst_DECL, void *buffer)
006bc1
 	case DASM_EXTERN: n = DASM_EXTERN(Dst, cp, p[1], *p); p += 2; goto wd;
006bc1
 	case DASM_MARK: mark = cp; break;
006bc1
 	case DASM_ESC: action = *p++;
006bc1
+	  /* fallthrough */
006bc1
 	default: *cp++ = action; break;
006bc1
 	case DASM_SECTION: case DASM_STOP: goto stop;
006bc1
 	}
006bc1
diff --git a/src/lj_asm.c b/src/lj_asm.c
006bc1
index 02714d4..dd7186f 100644
006bc1
--- a/src/lj_asm.c
006bc1
+++ b/src/lj_asm.c
006bc1
@@ -2136,6 +2136,7 @@ static void asm_setup_regsp(ASMState *as)
006bc1
     case IR_SNEW: case IR_XSNEW: case IR_NEWREF: case IR_BUFPUT:
006bc1
       if (REGARG_NUMGPR < 3 && as->evenspill < 3)
006bc1
 	as->evenspill = 3;  /* lj_str_new and lj_tab_newkey need 3 args. */
006bc1
+      /* fallthrough */
006bc1
 #if LJ_TARGET_X86 && LJ_HASFFI
006bc1
       if (0) {
006bc1
     case IR_CNEW:
006bc1
@@ -2176,7 +2177,7 @@ static void asm_setup_regsp(ASMState *as)
006bc1
 	continue;
006bc1
 #endif
006bc1
       }
006bc1
-      /* fallthrough for integer POW */
006bc1
+      /* fallthrough */ /* for integer POW */
006bc1
     case IR_DIV: case IR_MOD:
006bc1
       if (!irt_isnum(ir->t)) {
006bc1
 	ir->prev = REGSP_HINT(RID_RET);
006bc1
diff --git a/src/lj_cparse.c b/src/lj_cparse.c
006bc1
index 2ba50a7..f111537 100644
006bc1
--- a/src/lj_cparse.c
006bc1
+++ b/src/lj_cparse.c
006bc1
@@ -590,28 +590,34 @@ static void cp_expr_infix(CPState *cp, CPValue *k, int pri)
006bc1
 	k->id = k2.id > k3.id ? k2.id : k3.id;
006bc1
 	continue;
006bc1
       }
006bc1
+      /* fallthrough */
006bc1
     case 1:
006bc1
       if (cp_opt(cp, CTOK_OROR)) {
006bc1
 	cp_expr_sub(cp, &k2, 2); k->i32 = k->u32 || k2.u32; k->id = CTID_INT32;
006bc1
 	continue;
006bc1
       }
006bc1
+      /* fallthrough */
006bc1
     case 2:
006bc1
       if (cp_opt(cp, CTOK_ANDAND)) {
006bc1
 	cp_expr_sub(cp, &k2, 3); k->i32 = k->u32 && k2.u32; k->id = CTID_INT32;
006bc1
 	continue;
006bc1
       }
006bc1
+      /* fallthrough */
006bc1
     case 3:
006bc1
       if (cp_opt(cp, '|')) {
006bc1
 	cp_expr_sub(cp, &k2, 4); k->u32 = k->u32 | k2.u32; goto arith_result;
006bc1
       }
006bc1
+      /* fallthrough */
006bc1
     case 4:
006bc1
       if (cp_opt(cp, '^')) {
006bc1
 	cp_expr_sub(cp, &k2, 5); k->u32 = k->u32 ^ k2.u32; goto arith_result;
006bc1
       }
006bc1
+      /* fallthrough */
006bc1
     case 5:
006bc1
       if (cp_opt(cp, '&')) {
006bc1
 	cp_expr_sub(cp, &k2, 6); k->u32 = k->u32 & k2.u32; goto arith_result;
006bc1
       }
006bc1
+      /* fallthrough */
006bc1
     case 6:
006bc1
       if (cp_opt(cp, CTOK_EQ)) {
006bc1
 	cp_expr_sub(cp, &k2, 7); k->i32 = k->u32 == k2.u32; k->id = CTID_INT32;
006bc1
@@ -620,6 +626,7 @@ static void cp_expr_infix(CPState *cp, CPValue *k, int pri)
006bc1
 	cp_expr_sub(cp, &k2, 7); k->i32 = k->u32 != k2.u32; k->id = CTID_INT32;
006bc1
 	continue;
006bc1
       }
006bc1
+      /* fallthrough */
006bc1
     case 7:
006bc1
       if (cp_opt(cp, '<')) {
006bc1
 	cp_expr_sub(cp, &k2, 8);
006bc1
@@ -654,6 +661,7 @@ static void cp_expr_infix(CPState *cp, CPValue *k, int pri)
006bc1
 	k->id = CTID_INT32;
006bc1
 	continue;
006bc1
       }
006bc1
+      /* fallthrough */
006bc1
     case 8:
006bc1
       if (cp_opt(cp, CTOK_SHL)) {
006bc1
 	cp_expr_sub(cp, &k2, 9); k->u32 = k->u32 << k2.u32;
006bc1
@@ -666,6 +674,7 @@ static void cp_expr_infix(CPState *cp, CPValue *k, int pri)
006bc1
 	  k->u32 = k->u32 >> k2.u32;
006bc1
 	continue;
006bc1
       }
006bc1
+      /* fallthrough */
006bc1
     case 9:
006bc1
       if (cp_opt(cp, '+')) {
006bc1
 	cp_expr_sub(cp, &k2, 10); k->u32 = k->u32 + k2.u32;
006bc1
@@ -675,6 +684,7 @@ static void cp_expr_infix(CPState *cp, CPValue *k, int pri)
006bc1
       } else if (cp_opt(cp, '-')) {
006bc1
 	cp_expr_sub(cp, &k2, 10); k->u32 = k->u32 - k2.u32; goto arith_result;
006bc1
       }
006bc1
+      /* fallthrough */
006bc1
     case 10:
006bc1
       if (cp_opt(cp, '*')) {
006bc1
 	cp_expr_unary(cp, &k2;; k->u32 = k->u32 * k2.u32; goto arith_result;
006bc1
diff --git a/src/lj_err.c b/src/lj_err.c
006bc1
index 54f42c3..13a1ded 100644
006bc1
--- a/src/lj_err.c
006bc1
+++ b/src/lj_err.c
006bc1
@@ -153,6 +153,7 @@ static void *err_unwind(lua_State *L, void *stopcf, int errcode)
006bc1
     case FRAME_CONT:  /* Continuation frame. */
006bc1
       if (frame_iscont_fficb(frame))
006bc1
 	goto unwind_c;
006bc1
+      /* fallthrough */
006bc1
     case FRAME_VARG:  /* Vararg frame. */
006bc1
       frame = frame_prevd(frame);
006bc1
       break;
006bc1
diff --git a/src/lj_opt_sink.c b/src/lj_opt_sink.c
006bc1
index 6a00d04..4efe395 100644
006bc1
--- a/src/lj_opt_sink.c
006bc1
+++ b/src/lj_opt_sink.c
006bc1
@@ -100,8 +100,8 @@ static void sink_mark_ins(jit_State *J)
006bc1
 	   (LJ_32 && ir+1 < irlast && (ir+1)->o == IR_HIOP &&
006bc1
 	    !sink_checkphi(J, ir, (ir+1)->op2))))
006bc1
 	irt_setmark(ir->t);  /* Mark ineligible allocation. */
006bc1
-      /* fallthrough */
006bc1
 #endif
006bc1
+      /* fallthrough */
006bc1
     case IR_USTORE:
006bc1
       irt_setmark(IR(ir->op2)->t);  /* Mark stored value. */
006bc1
       break;
006bc1
diff --git a/src/lj_parse.c b/src/lj_parse.c
006bc1
index 9e5976f..6785495 100644
006bc1
--- a/src/lj_parse.c
006bc1
+++ b/src/lj_parse.c
006bc1
@@ -2696,7 +2696,8 @@ static int parse_stmt(LexState *ls)
006bc1
       lj_lex_next(ls);
006bc1
       parse_goto(ls);
006bc1
       break;
006bc1
-    }  /* else: fallthrough */
006bc1
+    }
006bc1
+    /* fallthrough */
006bc1
   default:
006bc1
     parse_call_assign(ls);
006bc1
     break;
006bc1
diff --git a/src/luajit.c b/src/luajit.c
006bc1
index 9e15b26..0e18dc5 100644
006bc1
--- a/src/luajit.c
006bc1
+++ b/src/luajit.c
006bc1
@@ -419,6 +419,7 @@ static int collectargs(char **argv, int *flags)
006bc1
       break;
006bc1
     case 'e':
006bc1
       *flags |= FLAGS_EXEC;
006bc1
+      /* fallthrough */
006bc1
     case 'j':  /* LuaJIT extension */
006bc1
     case 'l':
006bc1
       *flags |= FLAGS_OPTION;
006bc1
-- 
006bc1
2.20.1
006bc1