Update the order when predicating blocks. (#1859)
When doing predicate blocks, we need to traverse every block in structured order in order to keep track of which construct a block is contained in. The standard way of traversing code in structured order is to create a list with all of the nodes in order. However, when predicating blocks, new blocks are created, and those blocks are missed. This causes branches that go too far. The solution is to update the order as new blocks are created. Since we are using an std::list, we do not have to worry about invalidation of iterators when changing the list.
Loading
Please register or sign in to comment