@@ -79,16 +79,14 @@ impl StackSlotUsage {
79
79
} ) . collect :: < Vec < Inst > > ( )
80
80
}
81
81
82
- fn remove_unused_stack_addr ( & mut self , func : & mut Function , inst : Inst ) {
82
+ fn remove_unused_stack_addr ( func : & mut Function , inst : Inst ) {
83
83
func. dfg . detach_results ( inst) ;
84
84
func. dfg . replace ( inst) . nop ( ) ;
85
- self . stack_addr . remove ( & inst) ;
86
85
}
87
86
88
- fn remove_unused_load ( & mut self , func : & mut Function , load : Inst ) {
87
+ fn remove_unused_load ( func : & mut Function , load : Inst ) {
89
88
func. dfg . detach_results ( load) ;
90
89
func. dfg . replace ( load) . nop ( ) ;
91
- self . stack_load . remove ( & load) ;
92
90
}
93
91
94
92
fn remove_dead_store ( & mut self , func : & mut Function , store : Inst ) {
@@ -315,18 +313,21 @@ fn remove_unused_stack_addr_and_stack_load(opt_ctx: &mut OptimizeContext<'_>) {
315
313
316
314
// Replace all unused stack_addr and stack_load instructions with nop.
317
315
for stack_slot_users in opt_ctx. stack_slot_usage_map . values_mut ( ) {
318
- // FIXME: Remove clone
319
316
for & inst in stack_slot_users. stack_addr . clone ( ) . iter ( ) {
320
317
if stack_addr_load_insts_users. get ( & inst) . map ( |users| users. is_empty ( ) ) . unwrap_or ( true ) {
321
- stack_slot_users. remove_unused_stack_addr ( & mut opt_ctx. ctx . func , inst) ;
318
+ StackSlotUsage :: remove_unused_stack_addr ( & mut opt_ctx. ctx . func , inst) ;
319
+ stack_slot_users. stack_addr . remove ( & inst) ;
322
320
}
323
321
}
324
322
323
+ /*
325
324
for &inst in stack_slot_users.stack_load.clone().iter() {
326
325
if stack_addr_load_insts_users.get(&inst).map(|users| users.is_empty()).unwrap_or(true) {
327
- stack_slot_users. remove_unused_load ( & mut opt_ctx. ctx . func , inst) ;
326
+ StackSlotUsage::remove_unused_load(&mut opt_ctx.ctx.func, inst);
327
+ stack_slot_users.stack_load.remove(&inst);
328
328
}
329
329
}
330
+ */
330
331
}
331
332
}
332
333
0 commit comments