fix stackifier: forward edge out of loop header to loop tail
This commit is contained in:
parent
c79e6aab05
commit
385f726094
|
@ -25,7 +25,6 @@ enum Region {
|
||||||
/// end (after terminator) of second block. Can be extended past
|
/// end (after terminator) of second block. Can be extended past
|
||||||
/// the end if needed.
|
/// the end if needed.
|
||||||
Backward(OrderedBlockId, OrderedBlockId),
|
Backward(OrderedBlockId, OrderedBlockId),
|
||||||
|
|
||||||
// TODO: support irreducible CFGs by adding a `BackwardDispatch`
|
// TODO: support irreducible CFGs by adding a `BackwardDispatch`
|
||||||
// region kind whose start is adjusted back to the first loop
|
// region kind whose start is adjusted back to the first loop
|
||||||
// block. BackwardDispatch is contagious, i.e. converts adjacent
|
// block. BackwardDispatch is contagious, i.e. converts adjacent
|
||||||
|
@ -157,7 +156,7 @@ impl Shape {
|
||||||
regions[i] = Region::Backward(a, b);
|
regions[i] = Region::Backward(a, b);
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
(Region::Forward(_a, b), Region::Backward(c, d)) if b > c && b <= d => {
|
(Region::Forward(a, b), Region::Backward(c, d)) if b > c && b <= d && a < c => {
|
||||||
panic!("Irreducible CFG");
|
panic!("Irreducible CFG");
|
||||||
}
|
}
|
||||||
(Region::Forward(a, b), Region::Forward(c, d)) if b == d => {
|
(Region::Forward(a, b), Region::Forward(c, d)) if b == d => {
|
||||||
|
|
Loading…
Reference in a new issue