mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Merge pull request #6755 from ethereum/useShiftDirectly
[Optimizer] Use shift directly instead of multiplication in constant optimizer.
This commit is contained in:
		
						commit
						54ce3df321
					
				| @ -211,11 +211,16 @@ AssemblyItems ComputeMethod::findRepresentation(u256 const& _value) | ||||
| 			if (lowerPart != 0) | ||||
| 				newRoutine += findRepresentation(u256(abs(lowerPart))); | ||||
| 			if (m_params.evmVersion.hasBitwiseShifting()) | ||||
| 				newRoutine += AssemblyItems{u256(1), u256(bits), Instruction::SHL}; | ||||
| 			{ | ||||
| 				newRoutine += findRepresentation(upperPart); | ||||
| 				newRoutine += AssemblyItems{u256(bits), Instruction::SHL}; | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				newRoutine += AssemblyItems{u256(bits), u256(2), Instruction::EXP}; | ||||
| 			if (upperPart != 1) | ||||
| 				newRoutine += findRepresentation(upperPart) + AssemblyItems{Instruction::MUL}; | ||||
| 				if (upperPart != 1) | ||||
| 					newRoutine += findRepresentation(upperPart) + AssemblyItems{Instruction::MUL}; | ||||
| 			} | ||||
| 			if (lowerPart > 0) | ||||
| 				newRoutine += AssemblyItems{Instruction::ADD}; | ||||
| 			else if (lowerPart < 0) | ||||
|  | ||||
| @ -75,12 +75,12 @@ BOOST_AUTO_TEST_CASE(string_storage) | ||||
| 	else if (Options::get().useABIEncoderV2) | ||||
| 	{ | ||||
| 		if (Options::get().optimizeYul) | ||||
| 			CHECK_GAS(153631, 130633, 100); | ||||
| 			CHECK_GAS(153631, 129829, 100); | ||||
| 		else | ||||
| 			CHECK_GAS(153631, 138351, 100); | ||||
| 	} | ||||
| 	else | ||||
| 		CHECK_GAS(129037, 122500, 100); | ||||
| 		CHECK_GAS(129037, 121703, 100); | ||||
| 	if (Options::get().evmVersion() >= EVMVersion::byzantium()) | ||||
| 	{ | ||||
| 		callContractFunction("f()"); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user