Remove unnecessary check from temporal_order
This commit is contained in:
parent
790132523f
commit
b47c89de0e
1 changed files with 4 additions and 24 deletions
|
@ -382,30 +382,10 @@ fn temporal_order(ctx: &Context, src: Inst, dest: Inst) -> TemporalOrder {
|
|||
debug_assert_ne!(src, dest);
|
||||
|
||||
if ctx.domtree.dominates(src, dest, &ctx.func.layout) {
|
||||
return TemporalOrder::DefinitivelyBefore;
|
||||
TemporalOrder::DefinitivelyBefore
|
||||
} else if ctx.domtree.dominates(src, dest, &ctx.func.layout) {
|
||||
return TemporalOrder::NeverBefore;
|
||||
TemporalOrder::NeverBefore
|
||||
} else {
|
||||
TemporalOrder::MaybeBefore
|
||||
}
|
||||
|
||||
let src_ebb = ctx.func.layout.inst_ebb(src).unwrap();
|
||||
let dest_ebb = ctx.func.layout.inst_ebb(dest).unwrap();
|
||||
|
||||
// FIXME O(stack_load count * ebb count)
|
||||
// FIXME reuse memory allocations
|
||||
let mut visited = EntitySet::new();
|
||||
let mut todo = EntitySet::new();
|
||||
todo.insert(dest_ebb);
|
||||
while let Some(ebb) = todo.pop() {
|
||||
if visited.contains(ebb) {
|
||||
continue;
|
||||
}
|
||||
visited.insert(ebb);
|
||||
if ebb == src_ebb {
|
||||
return TemporalOrder::MaybeBefore;
|
||||
}
|
||||
for bb in ctx.cfg.pred_iter(ebb) {
|
||||
todo.insert(bb.ebb);
|
||||
}
|
||||
}
|
||||
TemporalOrder::NeverBefore
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue