mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Merge pull request #792 from chriseth/optimizer
Further fixes to the optimizer.
This commit is contained in:
		
						commit
						85a61fe886
					
				| @ -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; | ||||
| 		} | ||||
|  | ||||
| @ -116,7 +116,7 @@ private: | ||||
| 
 | ||||
| 	unsigned m_lastUsedId = 0; | ||||
| 	AssemblyItems const& m_items; | ||||
| 	bool m_joinKnowledge; | ||||
| 	bool m_joinKnowledge = true; | ||||
| 	std::map<BlockId, BasicBlock> m_blocks; | ||||
| }; | ||||
| 
 | ||||
|  | ||||
| @ -282,6 +282,8 @@ BOOST_AUTO_TEST_CASE(storage_write_in_loops) | ||||
| 	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) | ||||
| { | ||||
| 	// 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) | ||||
| 			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) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user