Skip to content

Commit 5afb72b

Browse files
Merge pull request #234 from Tcode-Motion/optimize-dominator-analysis-8715738396227382268
⚡ Optimize Dominator Analysis inner loop
2 parents f06ec67 + 7f05090 commit 5afb72b

1 file changed

Lines changed: 9 additions & 2 deletions

File tree

‎compiler/optimizer/src/analysis/dominators.rs‎

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,19 @@ impl DominatorAnalysis {
4141
continue;
4242
}
4343

44-
let mut new_dom = all_blocks.clone();
44+
let mut new_dom: Option<HashSet<BlockId>> = None;
4545
for &pred in &block.predecessors {
4646
if let Some(pred_doms) = dominators.get(&pred) {
47-
new_dom = new_dom.intersection(pred_doms).cloned().collect();
47+
if let Some(mut current_dom) = new_dom.take() {
48+
current_dom.retain(|x| pred_doms.contains(x));
49+
new_dom = Some(current_dom);
50+
} else {
51+
new_dom = Some(pred_doms.clone());
52+
}
4853
}
4954
}
55+
56+
let mut new_dom = new_dom.unwrap_or_else(|| all_blocks.clone());
5057
new_dom.insert(block.id);
5158

5259
if let Some(old_doms) = dominators.get_mut(&block.id) {

0 commit comments

Comments
 (0)