@@ -74,6 +74,7 @@ pub struct Codegen {
7474 epilogue_label : String ,
7575 loop_continue_label : Option < String > ,
7676 loop_break_label : Option < String > ,
77+ loop_break_label_used : bool ,
7778 match_in_switch : u32 ,
7879 /// When true (single-file merge), module calls use `{alias}_{func}` C names.
7980 mangle_merged_module_calls : bool ,
@@ -118,6 +119,7 @@ impl Codegen {
118119 epilogue_label : "epilogue" . to_string ( ) ,
119120 loop_continue_label : None ,
120121 loop_break_label : None ,
122+ loop_break_label_used : false ,
121123 match_in_switch : 0 ,
122124 mangle_merged_module_calls : false ,
123125 multi_file_module : None ,
@@ -1990,6 +1992,7 @@ impl Codegen {
19901992 self . write_indent ( ) ;
19911993 if self . match_in_switch > 0 {
19921994 if let Some ( ref label) = self . loop_break_label {
1995+ self . loop_break_label_used = true ;
19931996 self . writeln ( & format ! ( "goto {};" , label) ) ;
19941997 } else {
19951998 self . writeln ( "break;" ) ;
@@ -2452,6 +2455,8 @@ impl Codegen {
24522455 self . temp_var_counter += 1 ;
24532456 }
24542457 let prev_break = self . loop_break_label . take ( ) ;
2458+ let prev_break_used = self . loop_break_label_used ;
2459+ self . loop_break_label_used = false ;
24552460 if let Some ( ref label) = break_label {
24562461 self . loop_break_label = Some ( label. clone ( ) ) ;
24572462 }
@@ -2476,11 +2481,14 @@ impl Codegen {
24762481 self . indent_level -= 1 ;
24772482 self . write_indent ( ) ;
24782483 self . writeln ( "}" ) ;
2479- if let Some ( label) = break_label {
2484+ if let Some ( label) = break_label
2485+ && self . loop_break_label_used
2486+ {
24802487 self . write_indent ( ) ;
24812488 self . writeln ( & format ! ( "{}:" , label) ) ;
24822489 }
24832490 self . loop_break_label = prev_break;
2491+ self . loop_break_label_used = prev_break_used;
24842492 }
24852493 IRStmt :: UnsafeBlock ( unsafe_block) => {
24862494 // Unsafe blocks lower to regular C blocks (no special syntax)
0 commit comments