Fix desired branch elision heuristic

This commit is contained in:
Rerumu 2022-08-25 20:22:42 -04:00
parent 5887efa841
commit 94b3bd529a

View File

@ -10,22 +10,34 @@ struct Visit {
has_branch: bool, has_branch: bool,
} }
impl Visitor for Visit { impl Visit {
fn visit_br(&mut self, _: &Br) { fn set_branch(&mut self, br: &Br) {
if br.target() != 0 {
self.has_branch = true; self.has_branch = true;
} }
}
}
fn visit_br_if(&mut self, _: &BrIf) { impl Visitor for Visit {
self.has_branch = true; fn visit_br(&mut self, stat: &Br) {
self.set_branch(stat);
}
fn visit_br_if(&mut self, stat: &BrIf) {
self.set_branch(stat.target());
} }
fn visit_br_table(&mut self, table: &BrTable) { fn visit_br_table(&mut self, table: &BrTable) {
self.has_branch = true; self.set_branch(table.default());
if table.data().is_empty() { if table.data().is_empty() {
return; return;
} }
for target in table.data() {
self.set_branch(target);
}
let id = table as *const _ as usize; let id = table as *const _ as usize;
let len = self.br_map.len() + 1; let len = self.br_map.len() + 1;