@@ -194,12 +194,13 @@ void dasm_put(Dst_DECL, int start, ...)
194194 switch (action ) {
195195 case DASM_DISP :
196196 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 */
198199 case DASM_REL_A : /* Assumes ptrdiff_t is int. !x64 */
199200 case DASM_IMM_D : ofs += 4 ; break ;
200201 case DASM_IMM_S : CK (((n + 128 )& -256 ) == 0 , RANGE_I ); goto ob ;
201202 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 */
203204 case DASM_IMM_W : CK ((n & -65536 ) == 0 , RANGE_I ); ofs += 2 ; break ;
204205 case DASM_SPACE : p ++ ; ofs += n ; break ;
205206 case DASM_SETLABEL : b [pos - 2 ] = -0x40000000 ; break ; /* Neg. label ofs. */
@@ -323,11 +324,14 @@ int dasm_link(Dst_DECL, size_t *szp)
323324 pos += 2 ;
324325 break ;
325326 }
327+ /* fallthrough */
326328 case DASM_SPACE : case DASM_IMM_LG : case DASM_VREG : p ++ ;
329+ /* fallthrough */
327330 case DASM_DISP : case DASM_IMM_S : case DASM_IMM_B : case DASM_IMM_W :
328331 case DASM_IMM_D : case DASM_IMM_WB : case DASM_IMM_DB :
329332 case DASM_SETLABEL : case DASM_REL_A : case DASM_IMM_PC : pos ++ ; break ;
330333 case DASM_LABEL_LG : p ++ ;
334+ /* fallthrough */
331335 case DASM_LABEL_PC : b [pos ++ ] += ofs ; break ; /* Fix label offset. */
332336 case DASM_ALIGN : ofs -= (b [pos ++ ]+ ofs )& * p ++ ; break ; /* Adjust ofs. */
333337 case DASM_EXTERN : p += 2 ; break ;
@@ -385,16 +389,20 @@ int dasm_encode(Dst_DECL, void *buffer)
385389 if (mrm != 5 ) { mm [-1 ] -= 0x80 ; break ; } }
386390 if (((n + 128 ) & -256 ) != 0 ) goto wd ; else mm [-1 ] -= 0x40 ;
387391 }
392+ /* fallthrough */
388393 case DASM_IMM_S : case DASM_IMM_B : wb : dasmb (n ); break ;
389394 case DASM_IMM_DB : if (((n + 128 )& -256 ) == 0 ) {
390395 db : if (!mark ) mark = cp ; mark [-2 ] += 2 ; mark = NULL ; goto wb ;
391396 } else mark = NULL ;
397+ /* fallthrough */
392398 case DASM_IMM_D : wd : dasmd (n ); break ;
393399 case DASM_IMM_WB : if (((n + 128 )& -256 ) == 0 ) goto db ; else mark = NULL ;
400+ /* fallthrough */
394401 case DASM_IMM_W : dasmw (n ); break ;
395402 case DASM_VREG : { int t = * p ++ ; if (t >= 2 ) n <<=3 ; cp [-1 ] |= n ; break ; }
396403 case DASM_REL_LG : p ++ ; if (n >= 0 ) goto rel_pc ;
397404 b ++ ; n = (int )(ptrdiff_t )D -> globals [- n ];
405+ /* fallthrough */
398406 case DASM_REL_A : rel_a :
399407 n -= (unsigned int )(ptrdiff_t )(cp + 4 ); goto wd ; /* !x64 */
400408 case DASM_REL_PC : rel_pc : {
@@ -407,6 +415,7 @@ int dasm_encode(Dst_DECL, void *buffer)
407415 }
408416 case DASM_IMM_LG :
409417 p ++ ; if (n < 0 ) { n = (int )(ptrdiff_t )D -> globals [- n ]; goto wd ; }
418+ /* fallthrough */
410419 case DASM_IMM_PC : {
411420 int * pb = DASM_POS2PTR (D , n );
412421 n = * pb < 0 ? pb [1 ] : (* pb + (int )(ptrdiff_t )base );
@@ -427,6 +436,7 @@ int dasm_encode(Dst_DECL, void *buffer)
427436 case DASM_EXTERN : n = DASM_EXTERN (Dst , cp , p [1 ], * p ); p += 2 ; goto wd ;
428437 case DASM_MARK : mark = cp ; break ;
429438 case DASM_ESC : action = * p ++ ;
439+ /* fallthrough */
430440 default : * cp ++ = action ; break ;
431441 case DASM_SECTION : case DASM_STOP : goto stop ;
432442 }
0 commit comments