mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Further fixes to the optimizer.
This commit is contained in:
parent
fb90e8876f
commit
c0afb4549e
@ -250,10 +250,11 @@ void ControlFlowGraph::gatherKnowledge()
|
|||||||
KnownStatePointer state = item.state;
|
KnownStatePointer state = item.state;
|
||||||
if (block.startState)
|
if (block.startState)
|
||||||
{
|
{
|
||||||
if (m_joinKnowledge)
|
// We call reduceToCommonKnowledge even in the non-join setting to get the correct
|
||||||
state->reduceToCommonKnowledge(*block.startState, !item.blocksSeen.count(item.blockId));
|
// sequence number
|
||||||
else
|
if (!m_joinKnowledge)
|
||||||
state->reset();
|
state->reset();
|
||||||
|
state->reduceToCommonKnowledge(*block.startState, !item.blocksSeen.count(item.blockId));
|
||||||
if (*state == *block.startState)
|
if (*state == *block.startState)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -116,7 +116,7 @@ private:
|
|||||||
|
|
||||||
unsigned m_lastUsedId = 0;
|
unsigned m_lastUsedId = 0;
|
||||||
AssemblyItems const& m_items;
|
AssemblyItems const& m_items;
|
||||||
bool m_joinKnowledge;
|
bool m_joinKnowledge = true;
|
||||||
std::map<BlockId, BasicBlock> m_blocks;
|
std::map<BlockId, BasicBlock> m_blocks;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -282,6 +282,8 @@ BOOST_AUTO_TEST_CASE(storage_write_in_loops)
|
|||||||
compareVersions("f(uint256)", 36);
|
compareVersions("f(uint256)", 36);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Test disabled with https://github.com/ethereum/solidity/pull/762
|
||||||
|
// Information in joining branches is not retained anymore.
|
||||||
BOOST_AUTO_TEST_CASE(retain_information_in_branches)
|
BOOST_AUTO_TEST_CASE(retain_information_in_branches)
|
||||||
{
|
{
|
||||||
// This tests that the optimizer knows that we already have "z == sha3(y)" inside both branches.
|
// This tests that the optimizer knows that we already have "z == sha3(y)" inside both branches.
|
||||||
@ -315,7 +317,8 @@ BOOST_AUTO_TEST_CASE(retain_information_in_branches)
|
|||||||
if (_instr == Instruction::SHA3)
|
if (_instr == Instruction::SHA3)
|
||||||
numSHA3s++;
|
numSHA3s++;
|
||||||
});
|
});
|
||||||
BOOST_CHECK_EQUAL(1, numSHA3s);
|
// TEST DISABLED - OPTIMIZER IS NOT EFFECTIVE ON THIS ONE ANYMORE
|
||||||
|
// BOOST_CHECK_EQUAL(1, numSHA3s);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(store_tags_as_unions)
|
BOOST_AUTO_TEST_CASE(store_tags_as_unions)
|
||||||
|
Loading…
Reference in New Issue
Block a user