@@ -7205,7 +7205,7 @@ static void block(int flags)
72057205 label_push (& local_label_stack , tok , LABEL_DECLARED );
72067206 next ();
72077207 } while (tok == ',' );
7208- skip ( ';' );
7208+ if ( tok == ';' ) next ( );
72097209 }
72107210
72117211 while (tok != '}' ) {
@@ -7241,7 +7241,7 @@ static void block(int flags)
72417241 leave_scope (root_scope );
72427242 if (b )
72437243 gfunc_return (& func_vt );
7244- skip ( ';' );
7244+ if ( tok == ';' ) next ( );
72457245 /* jump unless last stmt in top-level block */
72467246 if (tok != '}' || local_scope != 1 )
72477247 rsym = gjmp (rsym );
@@ -7258,15 +7258,15 @@ static void block(int flags)
72587258 else
72597259 leave_scope (loop_scope );
72607260 * cur_scope -> bsym = gjmp (* cur_scope -> bsym );
7261- skip ( ';' );
7261+ if ( tok == ';' ) next ( );
72627262
72637263 } else if (t == TOK_CONTINUE ) {
72647264 /* compute jump */
72657265 if (!cur_scope -> csym )
72667266 tcc_error ("cannot continue" );
72677267 leave_scope (loop_scope );
72687268 * cur_scope -> csym = gjmp (* cur_scope -> csym );
7269- skip ( ';' );
7269+ if ( tok == ';' ) next ( );
72707270
72717271 } else if (t == TOK_FOR ) {
72727272 new_scope (& o );
@@ -7314,7 +7314,7 @@ static void block(int flags)
73147314 gexpr ();
73157315 c = gvtst (0 , 0 );
73167316 skip (')' );
7317- skip ( ';' );
7317+ if ( tok == ';' ) next ( );
73187318 gsym_addr (c , d );
73197319 gsym (a );
73207320 prev_scope_s (& o );
@@ -7426,7 +7426,7 @@ static void block(int flags)
74267426 } else {
74277427 expect ("label identifier" );
74287428 }
7429- skip ( ';' );
7429+ if ( tok == ';' ) next ( );
74307430
74317431 } else if (t == TOK_ASM1 || t == TOK_ASM2 || t == TOK_ASM3 ) {
74327432 asm_instr ();
@@ -7481,7 +7481,7 @@ static void block(int flags)
74817481 gexpr ();
74827482 vpop ();
74837483 }
7484- skip ( ';' );
7484+ if ( tok == ';' ) next ( );
74857485 }
74867486 }
74877487 }
@@ -8637,7 +8637,7 @@ static void do_Static_assert(void)
86378637 skip (')' );
86388638 if (c == 0 )
86398639 tcc_error ("%s" , msg );
8640- skip ( ';' );
8640+ if ( tok == ';' ) next ( );
86418641}
86428642
86438643#ifdef TCC_TARGET_PE
@@ -8718,6 +8718,10 @@ static int decl(int l)
87188718 return 1 ;
87198719 next ();
87208720 continue ;
8721+ } else if (l != VT_JMP && l != VT_CMP ) {
8722+ /* no semicolon - let caller handle it */
8723+ } else {
8724+ expect (";" );
87218725 }
87228726
87238727 while (1 ) { /* iterate thru each declaration */
@@ -8904,7 +8908,7 @@ static int decl(int l)
89048908 if (tok != ',' ) {
89058909 if (l == VT_JMP )
89068910 return has_init ? v : 1 ;
8907- skip ( ';' );
8911+ if ( tok == ';' ) next ( );
89088912 break ;
89098913 }
89108914 next ();
0 commit comments