mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	prepare_report: Add viaIR presets
This commit is contained in:
		
							parent
							
								
									703fa6c8b5
								
							
						
					
					
						commit
						ea724071b1
					
				| @ -5,8 +5,10 @@ const fs = require('fs') | ||||
| const compiler = require('solc') | ||||
| 
 | ||||
| SETTINGS_PRESETS = { | ||||
|     'legacy-optimize':    {optimize: true}, | ||||
|     'legacy-no-optimize': {optimize: false}, | ||||
|     'legacy-optimize':    {optimize: true,  viaIR: false}, | ||||
|     'legacy-no-optimize': {optimize: false, viaIR: false}, | ||||
|     'via-ir-optimize':    {optimize: true,  viaIR: true}, | ||||
|     'via-ir-no-optimize': {optimize: false, viaIR: true}, | ||||
| } | ||||
| 
 | ||||
| function loadSource(sourceFileName, stripSMTPragmas) | ||||
| @ -67,6 +69,8 @@ for (const preset of presets) | ||||
|             }, | ||||
|             settings: { | ||||
|                 optimizer: {enabled: settings.optimize}, | ||||
|                 // NOTE: We omit viaIR rather than set it to false to handle older versions that don't have it.
 | ||||
|                 viaIR: settings.viaIR ? true : undefined, | ||||
|                 outputSelection: {'*': {'*': ['evm.bytecode.object', 'metadata']}} | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @ -29,6 +29,8 @@ class CompilerInterface(Enum): | ||||
| class SettingsPreset(Enum): | ||||
|     LEGACY_OPTIMIZE = 'legacy-optimize' | ||||
|     LEGACY_NO_OPTIMIZE = 'legacy-no-optimize' | ||||
|     VIA_IR_OPTIMIZE = 'via-ir-optimize' | ||||
|     VIA_IR_NO_OPTIMIZE = 'via-ir-no-optimize' | ||||
| 
 | ||||
| 
 | ||||
| class SMTUse(Enum): | ||||
| @ -40,12 +42,15 @@ class SMTUse(Enum): | ||||
| @dataclass(frozen=True) | ||||
| class CompilerSettings: | ||||
|     optimize: bool | ||||
|     via_ir: bool | ||||
| 
 | ||||
|     @staticmethod | ||||
|     def from_preset(preset: SettingsPreset): | ||||
|         return { | ||||
|             SettingsPreset.LEGACY_OPTIMIZE:    CompilerSettings(optimize=True), | ||||
|             SettingsPreset.LEGACY_NO_OPTIMIZE: CompilerSettings(optimize=False), | ||||
|             SettingsPreset.LEGACY_OPTIMIZE:    CompilerSettings(optimize=True,  via_ir=False), | ||||
|             SettingsPreset.LEGACY_NO_OPTIMIZE: CompilerSettings(optimize=False, via_ir=False), | ||||
|             SettingsPreset.VIA_IR_OPTIMIZE:    CompilerSettings(optimize=True,  via_ir=True), | ||||
|             SettingsPreset.VIA_IR_NO_OPTIMIZE: CompilerSettings(optimize=False, via_ir=True), | ||||
|         }[preset] | ||||
| 
 | ||||
| 
 | ||||
| @ -224,6 +229,8 @@ def prepare_compiler_input( | ||||
|             }, | ||||
|             'settings': { | ||||
|                 'optimizer': {'enabled': settings.optimize}, | ||||
|                 # NOTE: We omit viaIR rather than set it to false to handle older versions that don't have it. | ||||
|                 **({'viaIR': True} if settings.via_ir else {}), | ||||
|                 'outputSelection': {'*': {'*': ['evm.bytecode.object', 'metadata']}}, | ||||
|             } | ||||
|         } | ||||
| @ -243,6 +250,8 @@ def prepare_compiler_input( | ||||
|             compiler_options.append('--optimize') | ||||
|         elif force_no_optimize_yul: | ||||
|             compiler_options.append('--no-optimize-yul') | ||||
|         if settings.via_ir: | ||||
|             compiler_options.append('--via-ir') | ||||
|         if smt_use == SMTUse.DISABLE: | ||||
|             compiler_options += ['--model-checker-engine', 'none'] | ||||
| 
 | ||||
|  | ||||
| @ -265,6 +265,7 @@ class TestPrepareCompilerInput(PrepareReportTestBase): | ||||
|             }, | ||||
|             'settings': { | ||||
|                 'optimizer': {'enabled': True}, | ||||
|                 'viaIR': True, | ||||
|                 'outputSelection': {'*': {'*': ['evm.bytecode.object', 'metadata']}}, | ||||
|                 'modelChecker': {'engine': 'none'}, | ||||
|             } | ||||
| @ -273,7 +274,7 @@ class TestPrepareCompilerInput(PrepareReportTestBase): | ||||
|         (command_line, compiler_input) = prepare_compiler_input( | ||||
|             Path('solc'), | ||||
|             SMT_CONTRACT_WITH_MIXED_NEWLINES_SOL_PATH, | ||||
|             preset=SettingsPreset.LEGACY_OPTIMIZE, | ||||
|             preset=SettingsPreset.VIA_IR_OPTIMIZE, | ||||
|             force_no_optimize_yul=False, | ||||
|             interface=CompilerInterface.STANDARD_JSON, | ||||
|             smt_use=SMTUse.DISABLE, | ||||
| @ -317,7 +318,7 @@ class TestPrepareCompilerInput(PrepareReportTestBase): | ||||
|         (command_line, compiler_input) = prepare_compiler_input( | ||||
|             Path('solc'), | ||||
|             SMT_SMOKE_TEST_SOL_PATH, | ||||
|             preset=SettingsPreset.LEGACY_OPTIMIZE, | ||||
|             preset=SettingsPreset.VIA_IR_OPTIMIZE, | ||||
|             force_no_optimize_yul=False, | ||||
|             interface=CompilerInterface.CLI, | ||||
|             smt_use=SMTUse.PRESERVE, | ||||
| @ -326,7 +327,7 @@ class TestPrepareCompilerInput(PrepareReportTestBase): | ||||
| 
 | ||||
|         self.assertEqual( | ||||
|             command_line, | ||||
|             ['solc', str(SMT_SMOKE_TEST_SOL_PATH), '--bin', '--optimize'], | ||||
|             ['solc', str(SMT_SMOKE_TEST_SOL_PATH), '--bin', '--optimize', '--via-ir'], | ||||
|         ) | ||||
|         self.assertEqual(compiler_input, SMT_SMOKE_TEST_SOL_CODE) | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user