Use EBB layout order almost everywhere.
The ebbs_numerically() function was a workaround for the unimplemented EBB layout order.
This commit is contained in:
@@ -48,11 +48,11 @@ impl ControlFlowGraph {
|
|||||||
|
|
||||||
// Even ebbs without predecessors should show up in the CFG, albeit
|
// Even ebbs without predecessors should show up in the CFG, albeit
|
||||||
// with no entires.
|
// with no entires.
|
||||||
for ebb in func.ebbs_numerically() {
|
for ebb in &func.layout {
|
||||||
cfg.init_ebb(ebb);
|
cfg.init_ebb(ebb);
|
||||||
}
|
}
|
||||||
|
|
||||||
for ebb in func.ebbs_numerically() {
|
for ebb in &func.layout {
|
||||||
// Flips to true when a terminating instruction is seen. So that if additional
|
// Flips to true when a terminating instruction is seen. So that if additional
|
||||||
// instructions occur an error may be returned.
|
// instructions occur an error may be returned.
|
||||||
for inst in func.layout.ebb_insts(ebb) {
|
for inst in func.layout.ebb_insts(ebb) {
|
||||||
@@ -120,7 +120,7 @@ mod tests {
|
|||||||
let nodes = cfg.iter().collect::<Vec<_>>();
|
let nodes = cfg.iter().collect::<Vec<_>>();
|
||||||
assert_eq!(nodes.len(), 3);
|
assert_eq!(nodes.len(), 3);
|
||||||
|
|
||||||
let mut fun_ebbs = func.ebbs_numerically();
|
let mut fun_ebbs = func.layout.ebbs();
|
||||||
for (ebb, predecessors) in nodes {
|
for (ebb, predecessors) in nodes {
|
||||||
assert_eq!(*ebb, fun_ebbs.next().unwrap());
|
assert_eq!(*ebb, fun_ebbs.next().unwrap());
|
||||||
assert_eq!(predecessors.len(), 0);
|
assert_eq!(predecessors.len(), 0);
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ pub fn write_function(w: &mut Write, func: &Function) -> Result {
|
|||||||
try!(write_spec(w, func));
|
try!(write_spec(w, func));
|
||||||
try!(writeln!(w, " {{"));
|
try!(writeln!(w, " {{"));
|
||||||
let mut any = try!(write_preamble(w, func));
|
let mut any = try!(write_preamble(w, func));
|
||||||
for ebb in func.ebbs_numerically() {
|
for ebb in &func.layout {
|
||||||
if any {
|
if any {
|
||||||
try!(writeln!(w, ""));
|
try!(writeln!(w, ""));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1116,7 +1116,7 @@ mod tests {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
assert_eq!(func.name, "ebbs");
|
assert_eq!(func.name, "ebbs");
|
||||||
|
|
||||||
let mut ebbs = func.ebbs_numerically();
|
let mut ebbs = func.layout.ebbs();
|
||||||
|
|
||||||
let ebb0 = ebbs.next().unwrap();
|
let ebb0 = ebbs.next().unwrap();
|
||||||
assert_eq!(func.ebb_args(ebb0).next(), None);
|
assert_eq!(func.ebb_args(ebb0).next(), None);
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ impl<T: Write> CFGPrinter<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn ebb_subgraphs(&mut self, func: &Function) {
|
fn ebb_subgraphs(&mut self, func: &Function) {
|
||||||
for ebb in func.ebbs_numerically() {
|
for ebb in &func.layout {
|
||||||
let inst_data = func.layout
|
let inst_data = func.layout
|
||||||
.ebb_insts(ebb)
|
.ebb_insts(ebb)
|
||||||
.filter(|inst| {
|
.filter(|inst| {
|
||||||
|
|||||||
Reference in New Issue
Block a user