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);
|
debug_assert_ne!(src, dest);
|
||||||
|
|
||||||
if ctx.domtree.dominates(src, dest, &ctx.func.layout) {
|
if ctx.domtree.dominates(src, dest, &ctx.func.layout) {
|
||||||
return TemporalOrder::DefinitivelyBefore;
|
TemporalOrder::DefinitivelyBefore
|
||||||
} else if ctx.domtree.dominates(src, dest, &ctx.func.layout) {
|
} 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