@@ -193,6 +193,8 @@ fn insert_phis_all(
193
193
for ( var_map, _) in & var_maps_and_types {
194
194
split_copy_memory ( header, blocks, var_map) ;
195
195
}
196
+
197
+ let mut rewrite_rules = FxHashMap :: default ( ) ;
196
198
for & ( ref var_map, base_var_type) in & var_maps_and_types {
197
199
let blocks_with_phi = insert_phis ( blocks, dominance_frontier, var_map) ;
198
200
let mut renamer = Renamer {
@@ -205,16 +207,15 @@ fn insert_phis_all(
205
207
phi_defs : FxHashSet :: default ( ) ,
206
208
visited : FxHashSet :: default ( ) ,
207
209
stack : Vec :: new ( ) ,
208
- rewrite_rules : FxHashMap :: default ( ) ,
210
+ rewrite_rules : & mut rewrite_rules ,
209
211
} ;
210
212
renamer. rename ( 0 , None ) ;
211
- // FIXME(eddyb) shouldn't this full rescan of the function be done once?
212
- apply_rewrite_rules (
213
- & renamer. rewrite_rules ,
214
- blocks. values_mut ( ) . map ( |block| & mut * * block) ,
215
- ) ;
216
- remove_nops ( blocks) ;
217
213
}
214
+ apply_rewrite_rules (
215
+ & rewrite_rules,
216
+ blocks. values_mut ( ) . map ( |block| & mut * * block) ,
217
+ ) ;
218
+ remove_nops ( blocks) ;
218
219
remove_old_variables ( blocks, & var_maps_and_types) ;
219
220
true
220
221
}
@@ -443,7 +444,7 @@ struct Renamer<'a, 'b> {
443
444
phi_defs : FxHashSet < Word > ,
444
445
visited : FxHashSet < usize > ,
445
446
stack : Vec < Word > ,
446
- rewrite_rules : FxHashMap < Word , Word > ,
447
+ rewrite_rules : & ' a mut FxHashMap < Word , Word > ,
447
448
}
448
449
449
450
impl Renamer < ' _ , ' _ > {
0 commit comments