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; | 		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