diff options
Further fixes to the optimizer.
Diffstat (limited to 'libevmasm/ControlFlowGraph.cpp')
-rw-r--r-- | libevmasm/ControlFlowGraph.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/libevmasm/ControlFlowGraph.cpp b/libevmasm/ControlFlowGraph.cpp index 61b24e4b..d4801562 100644 --- a/libevmasm/ControlFlowGraph.cpp +++ b/libevmasm/ControlFlowGraph.cpp @@ -250,10 +250,11 @@ void ControlFlowGraph::gatherKnowledge() KnownStatePointer state = item.state; if (block.startState) { - if (m_joinKnowledge) - state->reduceToCommonKnowledge(*block.startState, !item.blocksSeen.count(item.blockId)); - else + // We call reduceToCommonKnowledge even in the non-join setting to get the correct + // sequence number + if (!m_joinKnowledge) state->reset(); + state->reduceToCommonKnowledge(*block.startState, !item.blocksSeen.count(item.blockId)); if (*state == *block.startState) continue; } |