File tree Expand file tree Collapse file tree 1 file changed +8
-6
lines changed
Expand file tree Collapse file tree 1 file changed +8
-6
lines changed Original file line number Diff line number Diff line change @@ -211,7 +211,15 @@ IrCloner Fusion::copy(const Fusion* from, Fusion* to) {
211211 ir_cloner.clone (val);
212212 }
213213
214+ // Wire up definitions and uses on cloned vals
215+ for (auto val : from->vals ()) {
216+ ir_cloner.clone (val)->setDefinition (ir_cloner.clone (val->definition_ ));
217+ ir_cloner.clone (val)->setUses (ir_cloner.clone (val->uses_ ));
218+ }
219+
214220 // Sync per-Fusion name counters from source to dest.
221+ // Must be AFTER all cloning (vals and exprs) so that registerVal/registerExpr
222+ // increments during cloning do not inflate the final counter values.
215223 // During cloning, registerVal increments the dest Fusion's counter for each
216224 // val, then IrBuilder::clone overrides the name with setName(src->name()).
217225 // If source names are non-sequential (e.g., {0..10, 22..27} from segmenter
@@ -221,12 +229,6 @@ IrCloner Fusion::copy(const Fusion* from, Fusion* to) {
221229 to->val_type_name_map_ = from->val_type_name_map_ ;
222230 to->expr_name_counter_ = from->expr_name_counter_ ;
223231
224- // Wire up definitions and uses on cloned vals
225- for (auto val : from->vals ()) {
226- ir_cloner.clone (val)->setDefinition (ir_cloner.clone (val->definition_ ));
227- ir_cloner.clone (val)->setUses (ir_cloner.clone (val->uses_ ));
228- }
229-
230232 // Remap cached special val pointers
231233 if (from->zero_val_ ) {
232234 to->zero_val_ = ir_cloner.clone (from->zero_val_ );
You can’t perform that action at this time.
0 commit comments