}
}
-void post_scheduler::update_live_src_vec(vvec &vv, val_set &born, bool src) {
+void post_scheduler::update_live_src_vec(vvec &vv, val_set *born, bool src) {
for (vvec::iterator I = vv.begin(), E = vv.end(); I != E; ++I) {
value *v = *I;
cleared_interf.add_val(v);
}
}
- born.add_val(v);
+ if (born)
+ born->add_val(v);
}
} else if (v->is_rel()) {
if (!v->rel->is_any_gpr())
}
}
-void post_scheduler::update_live(node *n, val_set &born) {
+void post_scheduler::update_live(node *n, val_set *born) {
update_live_dst_vec(n->dst);
update_live_src_vec(n->src, born, true);
update_live_src_vec(n->dst, born, false);
if (!n)
continue;
- update_live(n, vals_born);
+ update_live(n, &vals_born);
}
PSC_DUMP(
if (s->is_prealloc() && !map_src_val(s))
return true;
- live.remove_val(d);
- live.add_val(s);
+ update_live(n, NULL);
release_src_values(n);
n->remove();
bool recolor_local(value *v);
void update_local_interferences();
- void update_live_src_vec(vvec &vv, val_set &born, bool src);
+ void update_live_src_vec(vvec &vv, val_set *born, bool src);
void update_live_dst_vec(vvec &vv);
- void update_live(node *n, val_set &born);
+ void update_live(node *n, val_set *born);
void process_group();
void set_color_local_val(value *v, sel_chan color);