Move entry_block() into Layout.

The single entry block in a function is simply the first block in the layout.

Remove the 'entry' keyword from the textual IL, the lexer and parser.
This commit is contained in:
Jakob Stoklund Olesen
2016-07-22 10:06:51 -07:00
parent 38815dcca3
commit f116f03327
8 changed files with 29 additions and 37 deletions

View File

@@ -104,11 +104,8 @@ impl ControlFlowGraph {
&self.data[ebb].successors
}
pub fn postorder_ebbs(&self) -> Vec<Ebb> {
if self.len() < 1 {
return Vec::new();
}
let mut stack_a = vec![Ebb::with_number(0).unwrap()];
pub fn postorder_ebbs(&self, entry: Ebb) -> Vec<Ebb> {
let mut stack_a = vec![entry];
let mut stack_b = Vec::new();
while stack_a.len() > 0 {
let cur = stack_a.pop().unwrap();
@@ -282,7 +279,7 @@ mod tests {
func.layout.append_inst(jmp_ebb2_ebb5, ebb2);
let cfg = ControlFlowGraph::new(&func);
assert_eq!(cfg.postorder_ebbs(),
assert_eq!(cfg.postorder_ebbs(func.layout.entry_block().unwrap()),
vec![ebb0, ebb2, ebb5, ebb4, ebb1, ebb3]);
}
@@ -309,6 +306,7 @@ mod tests {
func.layout.append_inst(jmp_ebb2_ebb3, ebb2);
let cfg = ControlFlowGraph::new(&func);
assert_eq!(cfg.postorder_ebbs(), vec![ebb0, ebb1, ebb2, ebb3]);
assert_eq!(cfg.postorder_ebbs(func.layout.entry_block().unwrap()),
vec![ebb0, ebb1, ebb2, ebb3]);
}
}