diff options
| author | Mike Pall <mike> | 2018-01-29 13:19:30 +0100 |
|---|---|---|
| committer | Mike Pall <mike> | 2018-01-29 13:19:30 +0100 |
| commit | 0bf46e1edf94c43795b5e491efe682ab70974ce7 (patch) | |
| tree | 5e96ce2da5161ebd49fb564fe5aa73805b3391b7 | |
| parent | 74c544d68c07bcd416225598cdf15f88e62fd457 (diff) | |
| parent | d4ee80342770d1281e2ce877f8ae8ab1d99e6528 (diff) | |
| download | luajit-0bf46e1edf94c43795b5e491efe682ab70974ce7.tar.gz luajit-0bf46e1edf94c43795b5e491efe682ab70974ce7.tar.bz2 luajit-0bf46e1edf94c43795b5e491efe682ab70974ce7.zip | |
Merge branch 'master' into v2.1
| -rw-r--r-- | dynasm/dasm_arm.h | 2 | ||||
| -rw-r--r-- | dynasm/dasm_mips.h | 1 | ||||
| -rw-r--r-- | dynasm/dasm_ppc.h | 1 | ||||
| -rw-r--r-- | dynasm/dasm_x86.h | 18 | ||||
| -rw-r--r-- | src/lj_asm.c | 7 | ||||
| -rw-r--r-- | src/lj_cparse.c | 10 | ||||
| -rw-r--r-- | src/lj_err.c | 1 | ||||
| -rw-r--r-- | src/lj_opt_sink.c | 2 | ||||
| -rw-r--r-- | src/lj_parse.c | 3 | ||||
| -rw-r--r-- | src/luajit.c | 1 |
10 files changed, 39 insertions, 7 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 4b49fd8c..71a835b2 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 3a7ee9b0..83fc030a 100644 --- a/dynasm/dasm_ppc.h +++ b/dynasm/dasm_ppc.h | |||
| @@ -354,6 +354,7 @@ int dasm_encode(Dst_DECL, void *buffer) | |||
| 354 | break; | 354 | break; |
| 355 | case DASM_REL_LG: | 355 | case DASM_REL_LG: |
| 356 | CK(n >= 0, UNDEF_LG); | 356 | CK(n >= 0, UNDEF_LG); |
| 357 | /* fallthrough */ | ||
| 357 | case DASM_REL_PC: | 358 | case DASM_REL_PC: |
| 358 | CK(n >= 0, UNDEF_PC); | 359 | CK(n >= 0, UNDEF_PC); |
| 359 | n = *DASM_POS2PTR(D, n) - (int)((char *)cp - base); | 360 | n = *DASM_POS2PTR(D, n) - (int)((char *)cp - base); |
diff --git a/dynasm/dasm_x86.h b/dynasm/dasm_x86.h index f598da9a..dc14d883 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 < 0) mrm = p[-2]; if ((mrm&7) != 5) break; } | 196 | if (n == 0) { if (mrm < 0) 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. */ |
| @@ -207,8 +208,8 @@ void dasm_put(Dst_DECL, int start, ...) | |||
| 207 | if (*p < 0x40 && p[1] == DASM_DISP) mrm = n; | 208 | if (*p < 0x40 && p[1] == DASM_DISP) mrm = n; |
| 208 | if (*p < 0x20 && (n&7) == 4) ofs++; | 209 | if (*p < 0x20 && (n&7) == 4) ofs++; |
| 209 | switch ((*p++ >> 3) & 3) { | 210 | switch ((*p++ >> 3) & 3) { |
| 210 | case 3: n |= b[pos-3]; | 211 | case 3: n |= b[pos-3]; /* fallthrough */ |
| 211 | case 2: n |= b[pos-2]; | 212 | case 2: n |= b[pos-2]; /* fallthrough */ |
| 212 | case 1: if (n <= 7) { b[pos-1] |= 0x10; ofs--; } | 213 | case 1: if (n <= 7) { b[pos-1] |= 0x10; ofs--; } |
| 213 | } | 214 | } |
| 214 | continue; | 215 | continue; |
| @@ -329,11 +330,14 @@ int dasm_link(Dst_DECL, size_t *szp) | |||
| 329 | pos += 2; | 330 | pos += 2; |
| 330 | break; | 331 | break; |
| 331 | } | 332 | } |
| 333 | /* fallthrough */ | ||
| 332 | case DASM_SPACE: case DASM_IMM_LG: case DASM_VREG: p++; | 334 | case DASM_SPACE: case DASM_IMM_LG: case DASM_VREG: p++; |
| 335 | /* fallthrough */ | ||
| 333 | case DASM_DISP: case DASM_IMM_S: case DASM_IMM_B: case DASM_IMM_W: | 336 | case DASM_DISP: case DASM_IMM_S: case DASM_IMM_B: case DASM_IMM_W: |
| 334 | case DASM_IMM_D: case DASM_IMM_WB: case DASM_IMM_DB: | 337 | case DASM_IMM_D: case DASM_IMM_WB: case DASM_IMM_DB: |
| 335 | case DASM_SETLABEL: case DASM_REL_A: case DASM_IMM_PC: pos++; break; | 338 | case DASM_SETLABEL: case DASM_REL_A: case DASM_IMM_PC: pos++; break; |
| 336 | case DASM_LABEL_LG: p++; | 339 | case DASM_LABEL_LG: p++; |
| 340 | /* fallthrough */ | ||
| 337 | case DASM_LABEL_PC: b[pos++] += ofs; break; /* Fix label offset. */ | 341 | case DASM_LABEL_PC: b[pos++] += ofs; break; /* Fix label offset. */ |
| 338 | case DASM_ALIGN: ofs -= (b[pos++]+ofs)&*p++; break; /* Adjust ofs. */ | 342 | case DASM_ALIGN: ofs -= (b[pos++]+ofs)&*p++; break; /* Adjust ofs. */ |
| 339 | case DASM_EXTERN: p += 2; break; | 343 | case DASM_EXTERN: p += 2; break; |
| @@ -391,12 +395,15 @@ int dasm_encode(Dst_DECL, void *buffer) | |||
| 391 | if (mrm != 5) { mm[-1] -= 0x80; break; } } | 395 | if (mrm != 5) { mm[-1] -= 0x80; break; } } |
| 392 | if (((n+128) & -256) != 0) goto wd; else mm[-1] -= 0x40; | 396 | if (((n+128) & -256) != 0) goto wd; else mm[-1] -= 0x40; |
| 393 | } | 397 | } |
| 398 | /* fallthrough */ | ||
| 394 | case DASM_IMM_S: case DASM_IMM_B: wb: dasmb(n); break; | 399 | case DASM_IMM_S: case DASM_IMM_B: wb: dasmb(n); break; |
| 395 | case DASM_IMM_DB: if (((n+128)&-256) == 0) { | 400 | case DASM_IMM_DB: if (((n+128)&-256) == 0) { |
| 396 | db: if (!mark) mark = cp; mark[-2] += 2; mark = NULL; goto wb; | 401 | db: if (!mark) mark = cp; mark[-2] += 2; mark = NULL; goto wb; |
| 397 | } else mark = NULL; | 402 | } else mark = NULL; |
| 403 | /* fallthrough */ | ||
| 398 | case DASM_IMM_D: wd: dasmd(n); break; | 404 | case DASM_IMM_D: wd: dasmd(n); break; |
| 399 | case DASM_IMM_WB: if (((n+128)&-256) == 0) goto db; else mark = NULL; | 405 | case DASM_IMM_WB: if (((n+128)&-256) == 0) goto db; else mark = NULL; |
| 406 | /* fallthrough */ | ||
| 400 | case DASM_IMM_W: dasmw(n); break; | 407 | case DASM_IMM_W: dasmw(n); break; |
| 401 | case DASM_VREG: { | 408 | case DASM_VREG: { |
| 402 | int t = *p++; | 409 | int t = *p++; |
| @@ -421,6 +428,7 @@ int dasm_encode(Dst_DECL, void *buffer) | |||
| 421 | } | 428 | } |
| 422 | case DASM_REL_LG: p++; if (n >= 0) goto rel_pc; | 429 | case DASM_REL_LG: p++; if (n >= 0) goto rel_pc; |
| 423 | b++; n = (int)(ptrdiff_t)D->globals[-n]; | 430 | b++; n = (int)(ptrdiff_t)D->globals[-n]; |
| 431 | /* fallthrough */ | ||
| 424 | case DASM_REL_A: rel_a: | 432 | case DASM_REL_A: rel_a: |
| 425 | n -= (unsigned int)(ptrdiff_t)(cp+4); goto wd; /* !x64 */ | 433 | n -= (unsigned int)(ptrdiff_t)(cp+4); goto wd; /* !x64 */ |
| 426 | case DASM_REL_PC: rel_pc: { | 434 | case DASM_REL_PC: rel_pc: { |
| @@ -433,6 +441,7 @@ int dasm_encode(Dst_DECL, void *buffer) | |||
| 433 | } | 441 | } |
| 434 | case DASM_IMM_LG: | 442 | case DASM_IMM_LG: |
| 435 | p++; if (n < 0) { n = (int)(ptrdiff_t)D->globals[-n]; goto wd; } | 443 | p++; if (n < 0) { n = (int)(ptrdiff_t)D->globals[-n]; goto wd; } |
| 444 | /* fallthrough */ | ||
| 436 | case DASM_IMM_PC: { | 445 | case DASM_IMM_PC: { |
| 437 | int *pb = DASM_POS2PTR(D, n); | 446 | int *pb = DASM_POS2PTR(D, n); |
| 438 | n = *pb < 0 ? pb[1] : (*pb + (int)(ptrdiff_t)base); | 447 | n = *pb < 0 ? pb[1] : (*pb + (int)(ptrdiff_t)base); |
| @@ -453,6 +462,7 @@ int dasm_encode(Dst_DECL, void *buffer) | |||
| 453 | case DASM_EXTERN: n = DASM_EXTERN(Dst, cp, p[1], *p); p += 2; goto wd; | 462 | case DASM_EXTERN: n = DASM_EXTERN(Dst, cp, p[1], *p); p += 2; goto wd; |
| 454 | case DASM_MARK: mark = cp; break; | 463 | case DASM_MARK: mark = cp; break; |
| 455 | case DASM_ESC: action = *p++; | 464 | case DASM_ESC: action = *p++; |
| 465 | /* fallthrough */ | ||
| 456 | default: *cp++ = action; break; | 466 | default: *cp++ = action; break; |
| 457 | case DASM_SECTION: case DASM_STOP: goto stop; | 467 | case DASM_SECTION: case DASM_STOP: goto stop; |
| 458 | } | 468 | } |
diff --git a/src/lj_asm.c b/src/lj_asm.c index 5f83779e..992dcf59 100644 --- a/src/lj_asm.c +++ b/src/lj_asm.c | |||
| @@ -2142,9 +2142,12 @@ static void asm_setup_regsp(ASMState *as) | |||
| 2142 | if (ir->op2 != REF_NIL && as->evenspill < 4) | 2142 | if (ir->op2 != REF_NIL && as->evenspill < 4) |
| 2143 | as->evenspill = 4; /* lj_cdata_newv needs 4 args. */ | 2143 | as->evenspill = 4; /* lj_cdata_newv needs 4 args. */ |
| 2144 | } | 2144 | } |
| 2145 | /* fallthrough */ | ||
| 2145 | #else | 2146 | #else |
| 2147 | /* fallthrough */ | ||
| 2146 | case IR_CNEW: | 2148 | case IR_CNEW: |
| 2147 | #endif | 2149 | #endif |
| 2150 | /* fallthrough */ | ||
| 2148 | case IR_TNEW: case IR_TDUP: case IR_CNEWI: case IR_TOSTR: | 2151 | case IR_TNEW: case IR_TDUP: case IR_CNEWI: case IR_TOSTR: |
| 2149 | case IR_BUFSTR: | 2152 | case IR_BUFSTR: |
| 2150 | ir->prev = REGSP_HINT(RID_RET); | 2153 | ir->prev = REGSP_HINT(RID_RET); |
| @@ -2165,6 +2168,7 @@ static void asm_setup_regsp(ASMState *as) | |||
| 2165 | case IR_LDEXP: | 2168 | case IR_LDEXP: |
| 2166 | #endif | 2169 | #endif |
| 2167 | #endif | 2170 | #endif |
| 2171 | /* fallthrough */ | ||
| 2168 | case IR_POW: | 2172 | case IR_POW: |
| 2169 | if (!LJ_SOFTFP && irt_isnum(ir->t)) { | 2173 | if (!LJ_SOFTFP && irt_isnum(ir->t)) { |
| 2170 | if (inloop) | 2174 | if (inloop) |
| @@ -2176,7 +2180,7 @@ static void asm_setup_regsp(ASMState *as) | |||
| 2176 | continue; | 2180 | continue; |
| 2177 | #endif | 2181 | #endif |
| 2178 | } | 2182 | } |
| 2179 | /* fallthrough for integer POW */ | 2183 | /* fallthrough */ /* for integer POW */ |
| 2180 | case IR_DIV: case IR_MOD: | 2184 | case IR_DIV: case IR_MOD: |
| 2181 | if (!irt_isnum(ir->t)) { | 2185 | if (!irt_isnum(ir->t)) { |
| 2182 | ir->prev = REGSP_HINT(RID_RET); | 2186 | ir->prev = REGSP_HINT(RID_RET); |
| @@ -2213,6 +2217,7 @@ static void asm_setup_regsp(ASMState *as) | |||
| 2213 | case IR_BSHL: case IR_BSHR: case IR_BSAR: | 2217 | case IR_BSHL: case IR_BSHR: case IR_BSAR: |
| 2214 | if ((as->flags & JIT_F_BMI2)) /* Except if BMI2 is available. */ | 2218 | if ((as->flags & JIT_F_BMI2)) /* Except if BMI2 is available. */ |
| 2215 | break; | 2219 | break; |
| 2220 | /* fallthrough */ | ||
| 2216 | case IR_BROL: case IR_BROR: | 2221 | case IR_BROL: case IR_BROR: |
| 2217 | if (!irref_isk(ir->op2) && !ra_hashint(IR(ir->op2)->r)) { | 2222 | if (!irref_isk(ir->op2) && !ra_hashint(IR(ir->op2)->r)) { |
| 2218 | IR(ir->op2)->r = REGSP_HINT(RID_ECX); | 2223 | IR(ir->op2)->r = REGSP_HINT(RID_ECX); |
diff --git a/src/lj_cparse.c b/src/lj_cparse.c index 83cfd112..19f632ff 100644 --- a/src/lj_cparse.c +++ b/src/lj_cparse.c | |||
| @@ -576,28 +576,34 @@ static void cp_expr_infix(CPState *cp, CPValue *k, int pri) | |||
| 576 | k->id = k2.id > k3.id ? k2.id : k3.id; | 576 | k->id = k2.id > k3.id ? k2.id : k3.id; |
| 577 | continue; | 577 | continue; |
| 578 | } | 578 | } |
| 579 | /* fallthrough */ | ||
| 579 | case 1: | 580 | case 1: |
| 580 | if (cp_opt(cp, CTOK_OROR)) { | 581 | if (cp_opt(cp, CTOK_OROR)) { |
| 581 | cp_expr_sub(cp, &k2, 2); k->i32 = k->u32 || k2.u32; k->id = CTID_INT32; | 582 | cp_expr_sub(cp, &k2, 2); k->i32 = k->u32 || k2.u32; k->id = CTID_INT32; |
| 582 | continue; | 583 | continue; |
| 583 | } | 584 | } |
| 585 | /* fallthrough */ | ||
| 584 | case 2: | 586 | case 2: |
| 585 | if (cp_opt(cp, CTOK_ANDAND)) { | 587 | if (cp_opt(cp, CTOK_ANDAND)) { |
| 586 | cp_expr_sub(cp, &k2, 3); k->i32 = k->u32 && k2.u32; k->id = CTID_INT32; | 588 | cp_expr_sub(cp, &k2, 3); k->i32 = k->u32 && k2.u32; k->id = CTID_INT32; |
| 587 | continue; | 589 | continue; |
| 588 | } | 590 | } |
| 591 | /* fallthrough */ | ||
| 589 | case 3: | 592 | case 3: |
| 590 | if (cp_opt(cp, '|')) { | 593 | if (cp_opt(cp, '|')) { |
| 591 | cp_expr_sub(cp, &k2, 4); k->u32 = k->u32 | k2.u32; goto arith_result; | 594 | cp_expr_sub(cp, &k2, 4); k->u32 = k->u32 | k2.u32; goto arith_result; |
| 592 | } | 595 | } |
| 596 | /* fallthrough */ | ||
| 593 | case 4: | 597 | case 4: |
| 594 | if (cp_opt(cp, '^')) { | 598 | if (cp_opt(cp, '^')) { |
| 595 | cp_expr_sub(cp, &k2, 5); k->u32 = k->u32 ^ k2.u32; goto arith_result; | 599 | cp_expr_sub(cp, &k2, 5); k->u32 = k->u32 ^ k2.u32; goto arith_result; |
| 596 | } | 600 | } |
| 601 | /* fallthrough */ | ||
| 597 | case 5: | 602 | case 5: |
| 598 | if (cp_opt(cp, '&')) { | 603 | if (cp_opt(cp, '&')) { |
| 599 | cp_expr_sub(cp, &k2, 6); k->u32 = k->u32 & k2.u32; goto arith_result; | 604 | cp_expr_sub(cp, &k2, 6); k->u32 = k->u32 & k2.u32; goto arith_result; |
| 600 | } | 605 | } |
| 606 | /* fallthrough */ | ||
| 601 | case 6: | 607 | case 6: |
| 602 | if (cp_opt(cp, CTOK_EQ)) { | 608 | if (cp_opt(cp, CTOK_EQ)) { |
| 603 | cp_expr_sub(cp, &k2, 7); k->i32 = k->u32 == k2.u32; k->id = CTID_INT32; | 609 | cp_expr_sub(cp, &k2, 7); k->i32 = k->u32 == k2.u32; k->id = CTID_INT32; |
| @@ -606,6 +612,7 @@ static void cp_expr_infix(CPState *cp, CPValue *k, int pri) | |||
| 606 | cp_expr_sub(cp, &k2, 7); k->i32 = k->u32 != k2.u32; k->id = CTID_INT32; | 612 | cp_expr_sub(cp, &k2, 7); k->i32 = k->u32 != k2.u32; k->id = CTID_INT32; |
| 607 | continue; | 613 | continue; |
| 608 | } | 614 | } |
| 615 | /* fallthrough */ | ||
| 609 | case 7: | 616 | case 7: |
| 610 | if (cp_opt(cp, '<')) { | 617 | if (cp_opt(cp, '<')) { |
| 611 | cp_expr_sub(cp, &k2, 8); | 618 | cp_expr_sub(cp, &k2, 8); |
| @@ -640,6 +647,7 @@ static void cp_expr_infix(CPState *cp, CPValue *k, int pri) | |||
| 640 | k->id = CTID_INT32; | 647 | k->id = CTID_INT32; |
| 641 | continue; | 648 | continue; |
| 642 | } | 649 | } |
| 650 | /* fallthrough */ | ||
| 643 | case 8: | 651 | case 8: |
| 644 | if (cp_opt(cp, CTOK_SHL)) { | 652 | if (cp_opt(cp, CTOK_SHL)) { |
| 645 | cp_expr_sub(cp, &k2, 9); k->u32 = k->u32 << k2.u32; | 653 | cp_expr_sub(cp, &k2, 9); k->u32 = k->u32 << k2.u32; |
| @@ -652,6 +660,7 @@ static void cp_expr_infix(CPState *cp, CPValue *k, int pri) | |||
| 652 | k->u32 = k->u32 >> k2.u32; | 660 | k->u32 = k->u32 >> k2.u32; |
| 653 | continue; | 661 | continue; |
| 654 | } | 662 | } |
| 663 | /* fallthrough */ | ||
| 655 | case 9: | 664 | case 9: |
| 656 | if (cp_opt(cp, '+')) { | 665 | if (cp_opt(cp, '+')) { |
| 657 | cp_expr_sub(cp, &k2, 10); k->u32 = k->u32 + k2.u32; | 666 | cp_expr_sub(cp, &k2, 10); k->u32 = k->u32 + k2.u32; |
| @@ -661,6 +670,7 @@ static void cp_expr_infix(CPState *cp, CPValue *k, int pri) | |||
| 661 | } else if (cp_opt(cp, '-')) { | 670 | } else if (cp_opt(cp, '-')) { |
| 662 | cp_expr_sub(cp, &k2, 10); k->u32 = k->u32 - k2.u32; goto arith_result; | 671 | cp_expr_sub(cp, &k2, 10); k->u32 = k->u32 - k2.u32; goto arith_result; |
| 663 | } | 672 | } |
| 673 | /* fallthrough */ | ||
| 664 | case 10: | 674 | case 10: |
| 665 | if (cp_opt(cp, '*')) { | 675 | if (cp_opt(cp, '*')) { |
| 666 | cp_expr_unary(cp, &k2); k->u32 = k->u32 * k2.u32; goto arith_result; | 676 | 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 b6be357e..abf176e5 100644 --- a/src/lj_err.c +++ b/src/lj_err.c | |||
| @@ -150,6 +150,7 @@ static void *err_unwind(lua_State *L, void *stopcf, int errcode) | |||
| 150 | case FRAME_CONT: /* Continuation frame. */ | 150 | case FRAME_CONT: /* Continuation frame. */ |
| 151 | if (frame_iscont_fficb(frame)) | 151 | if (frame_iscont_fficb(frame)) |
| 152 | goto unwind_c; | 152 | goto unwind_c; |
| 153 | /* fallthrough */ | ||
| 153 | case FRAME_VARG: /* Vararg frame. */ | 154 | case FRAME_VARG: /* Vararg frame. */ |
| 154 | frame = frame_prevd(frame); | 155 | frame = frame_prevd(frame); |
| 155 | break; | 156 | break; |
diff --git a/src/lj_opt_sink.c b/src/lj_opt_sink.c index a16d112f..c16363e7 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 08f7cfa6..c8efafad 100644 --- a/src/lj_parse.c +++ b/src/lj_parse.c | |||
| @@ -2667,7 +2667,8 @@ static int parse_stmt(LexState *ls) | |||
| 2667 | lj_lex_next(ls); | 2667 | lj_lex_next(ls); |
| 2668 | parse_goto(ls); | 2668 | parse_goto(ls); |
| 2669 | break; | 2669 | break; |
| 2670 | } /* else: fallthrough */ | 2670 | } |
| 2671 | /* fallthrough */ | ||
| 2671 | default: | 2672 | default: |
| 2672 | parse_call_assign(ls); | 2673 | parse_call_assign(ls); |
| 2673 | break; | 2674 | break; |
diff --git a/src/luajit.c b/src/luajit.c index 1ca24301..3a3ec247 100644 --- a/src/luajit.c +++ b/src/luajit.c | |||
| @@ -421,6 +421,7 @@ static int collectargs(char **argv, int *flags) | |||
| 421 | break; | 421 | break; |
| 422 | case 'e': | 422 | case 'e': |
| 423 | *flags |= FLAGS_EXEC; | 423 | *flags |= FLAGS_EXEC; |
| 424 | /* fallthrough */ | ||
| 424 | case 'j': /* LuaJIT extension */ | 425 | case 'j': /* LuaJIT extension */ |
| 425 | case 'l': | 426 | case 'l': |
| 426 | *flags |= FLAGS_OPTION; | 427 | *flags |= FLAGS_OPTION; |
