Commit Graph

254 Commits

Author SHA1 Message Date
chriseth
2b979cba38 Also optimize memory. 2019-06-20 18:43:37 +02:00
chriseth
8572600401 Implement knowledge base. 2019-06-20 18:43:37 +02:00
chriseth
1f9d11c644 Knowledge about storage. 2019-06-20 18:43:37 +02:00
chriseth
ecab46c707 Finish word size transform. 2019-06-20 10:42:56 +02:00
chriseth
d9d1c4a312
Merge pull request #6967 from ethereum/nameDisplacer
[Yul] Name displacer.
2019-06-19 18:56:54 +02:00
chriseth
8edf9e4baf
Merge pull request #6666 from vedant1811/issue-5405
Group function definitions
2019-06-19 18:03:40 +02:00
chriseth
d7b366ff46 Name displacer. 2019-06-19 14:55:38 +02:00
chriseth
cc5045a56e [Yul] Run optimizer on all dialects. 2019-06-19 10:01:16 +02:00
Vedant Agarwala
5d6cbd97df [Yul] Directly jump over a series of function definitions
Implement a AbstractAssembly::setStackHeight function
Update the tests
Update Changelog
2019-06-19 12:40:11 +08:00
chriseth
6cb6fe35ef Make Yul optimizer not fail for wasm. 2019-06-17 18:42:47 +02:00
Daniel Kirchner
ba8ad1a1d9 Use the TestCase settings mechanism for object compiler tests. 2019-06-11 14:11:27 +02:00
Daniel Kirchner
547173533c Unify parsing of simple test expectations and require lines to start with `//`. 2019-06-11 14:05:45 +02:00
chriseth
c9e2d388b5
Merge pull request #6848 from ethereum/invertibleRelation
Implement references using InvertibleRelation as data structure.
2019-05-29 13:34:10 +02:00
chriseth
2276b567b1
Merge pull request #6840 from ethereum/discoverMSize
Only remove msize-modifying instructions if msize is not used.
2019-05-28 13:16:55 +02:00
chriseth
df96648b1c Do not allow msize in inline assembly if the Yul optimizer is active. 2019-05-28 12:54:33 +02:00
chriseth
d7b5ea6761 Allow msize optimization only if it is not present. 2019-05-28 12:54:32 +02:00
chriseth
1c16124a09 Constant optimiser for Yul. 2019-05-28 11:35:07 +02:00
chriseth
4061ad0a7b Implement references using InvertibleRelation as data structure. 2019-05-27 22:55:59 +02:00
chriseth
6132f0aea9
Merge pull request #6800 from ethereum/skipEmptyDump
Skip empty entries in memory and storage dump.
2019-05-23 14:27:44 +02:00
chriseth
3c548a1d76 Update tests. 2019-05-23 13:17:27 +02:00
chriseth
e5902c58a4
Merge pull request #6777 from sifmelcara/loop-cond-rewriter
[YulOpt] Implement ForLoopConditionIntoBody
2019-05-23 12:51:51 +02:00
chriseth
14545852d1 Make YulInterpreterTest EVM version aware. 2019-05-23 12:42:11 +02:00
chriseth
91312e657b Skip empty entries in memory and storage dump. 2019-05-23 12:27:56 +02:00
chriseth
90e8594858 Update tests. 2019-05-23 11:30:12 +02:00
chriseth
1e3878121a Do not inline recursive functions. 2019-05-22 18:15:21 +02:00
mingchuan
4ab377eb00
Add tests for ForLoopConditionIntoBody 2019-05-22 21:51:03 +08:00
chriseth
1dc15d5864 Modify parser and optimizer. 2019-05-20 17:32:56 +02:00
chriseth
4bdb981224 Make dialect const& and allocate single instances statically. 2019-05-17 12:54:24 +02:00
chriseth
570db164c9 Make Dialect const. 2019-05-16 21:51:54 +02:00
chriseth
733677690e Update tests. 2019-05-16 12:30:05 +02:00
chriseth
f6437a2016 Optimizer rules that combine shifts and masks. 2019-05-15 20:30:53 +02:00
chriseth
246c1c939f Tests. 2019-05-13 18:58:55 +02:00
chriseth
dd4f9bf1a6 Really split structural simplifier. 2019-05-13 10:26:57 +02:00
chriseth
d9831c8b96 Split structural simplifier. 2019-05-13 10:26:57 +02:00
chriseth
6ee9ccf140 Test. 2019-05-09 17:36:40 +02:00
chriseth
3f55b52a88 Unify suffixes. 2019-05-09 17:07:18 +02:00
chriseth
eaee4412da Implement word size transform for if. 2019-05-09 16:55:39 +02:00
chriseth
54a3116ab8
Merge pull request #6698 from ethereum/asmPrinterOneLine
Format short blocks and loops on a single line.
2019-05-08 14:46:02 +02:00
chriseth
0532a8cef2 Format short blocks and loops on a single line. 2019-05-08 13:28:00 +02:00
Daniel Kirchner
76b88bdfd8 Allow test cases to indicate fatal errors. 2019-05-07 18:12:21 +02:00
chriseth
18bc82e6fd Fix interpreter exp bug. 2019-05-07 11:40:33 +02:00
chriseth
f113f8e4a0 Implement datasize, dataoffset and datacopy for yul interpreter. 2019-05-06 16:59:47 +02:00
Bhargava Shastry
2d1faf53be Reset loop state (to default) before interpreting for-loop post block 2019-05-02 22:22:19 +02:00
mingchuan
57fc4fde85
Add wordSizeTransform yulOptimizerTests 2019-05-03 01:52:01 +08:00
chriseth
578d618065
Merge pull request #6594 from ethereum/adjustCodeMetric
Increase code cost for branching statements.
2019-04-29 09:48:59 +02:00
chriseth
00d81929b1
Merge pull request #6576 from ethereum/isoltest-evmversion-comparator
Allow additional EVMVersion comparators in isoltest
2019-04-25 17:37:46 +02:00
Erik Kundt
15d753a3e0 Allows additional EVMVersion comparators in isoltest. 2019-04-25 17:13:17 +02:00
chriseth
bf104f718f Increase code cost for branching statements. 2019-04-25 17:08:11 +02:00
chriseth
f9ec1231b6 Support period as part of identifiers for Yul and Inline Assembly. 2019-04-25 16:48:16 +02:00
chriseth
b6bb3ae482
Merge pull request #6555 from sifmelcara/break-for-loop
[Yul] Disallow function definitions inside for loop init blocks
2019-04-25 11:20:44 +02:00
chriseth
f26cdea6ca Disallow Yul function definitions inside for loop init blocks. 2019-04-25 10:32:00 +02:00
chriseth
6292adbde6
Merge pull request #6580 from ethereum/doNotGenerateInstructionsAsNmes
Prevent instructions to be generated as names.
2019-04-24 22:07:05 +02:00
chriseth
0af8d758a5 Prevent instructions to be generated as names. 2019-04-24 14:35:21 +02:00
mingchuan
5d93c492fe [Yul] More accurate error messages for break/continue 2019-04-23 10:15:19 +02:00
chriseth
aad4373da4 Disable redundent assign eliminator for deeply nested loops. 2019-04-23 09:50:25 +02:00
hydai
d5b65fbf5b [Yul] Output an error of a switch case which contains string literals longer than 32 chars 2019-04-17 22:17:18 +08:00
fnatic
5b6ed7a97c
Removing scope rules for pre block in 'For Loops' 2019-04-17 05:58:40 +05:30
chriseth
fb06451f45 Add assertion that DeadCodeEliminator needs ForLoopInitRewriter. 2019-04-15 23:26:56 +02:00
Leonardo
dbc9442f9c
Merge pull request #6484 from sifmelcara/create-SourceReferenceFormatter-shortcut
Add a shortcut for formatting error information
2019-04-12 12:34:08 +02:00
mingchuan
d49733dfc3
Fix variable decl scope issue in DeadCodeEliminator
FoorLoopInitRewriter needs to be run before DeadCodeEliminator.
2019-04-10 19:00:29 +08:00
mingchuan
f1374066af
Add shortcuts for formatting error information 2019-04-10 18:44:45 +08:00
chriseth
1be3882ade Test shadowing between variables inside and outside of functions. 2019-04-05 13:41:39 +02:00
chriseth
d20b3c9f9f Function grouper is a requirement for the VarNameCleaner. 2019-04-05 13:41:38 +02:00
Bhargava Shastry
f15cedad7a yulInterpreter: More fine-grained exception handling 2019-04-04 13:02:55 +02:00
chriseth
887112b1b0 Fix SSA for multi-assignments. 2019-04-04 12:06:04 +02:00
Mathias Baumann
d46f29e128 Add bitshift optimizer tests 2019-04-03 22:38:31 +02:00
chriseth
e3d7a34c2c Make yul a setting. 2019-04-03 14:58:20 +02:00
chriseth
aeb260cde1 Add settings framework for interactive tests. 2019-04-03 14:58:20 +02:00
Mathias Baumann
e20acf5d0a Yul Optimizer: Remove dead code 2019-04-01 17:16:04 +02:00
chriseth
3264e9abf0 Make optimiser settings available to assembly stack. 2019-03-28 18:24:13 +01:00
chriseth
529aca5cbd
Merge pull request #6407 from ethereum/changeNamespace
Remove "using namespace" from header and move Instruction to dev::eth.
2019-03-28 14:32:07 +01:00
chriseth
2308904f68 Remove "using namespace" from header and move Instruction to dev::eth. 2019-03-28 13:48:11 +01:00
chriseth
91f96c299e More logic about control flow with continue and about finalize. Remove BlockScope. 2019-03-27 22:16:31 +01:00
Christian Parpart
a1ec49409d Yul] RedundantAssignEliminator: Implements break/continue handling within ForLoop. 2019-03-26 17:36:43 +01:00
chriseth
caddce6ef0 Detect duplicate cases based on integer value of case label. 2019-03-25 12:38:22 +01:00
chriseth
57f99247c8 Update tests. 2019-03-20 15:07:05 +01:00
chriseth
8514c0bc60 Provide max iterations for stack compressor as parameter. 2019-03-20 15:07:05 +01:00
chriseth
38cbf8d230 Pass "optimize stack allocation" flag down to the stack compressor. 2019-03-20 15:03:27 +01:00
Christian Parpart
82ced641e5
[Yul] Adds another test case for multiple continue statements within a for-loop 2019-03-18 12:43:20 +01:00
chriseth
500843f9c5
Merge pull request #6242 from ethereum/yul-bc-dataflow
Yul dataflow analysis for continue/break statements
2019-03-14 16:34:34 +01:00
Christian Parpart
57bcb8ba83
[yul] Ensures DataFlowAnalyzer works fine with break/continue statements just like without. 2019-03-14 16:18:45 +01:00
chriseth
49d914a391 Fix and test yul stack optimization flag for commandline interface. 2019-03-14 15:34:23 +01:00
Christian Parpart
05e2d362c8 [Yul] Adds break/continue statements and some general tests for for-loop syntax. 2019-03-11 15:05:05 +01:00
chriseth
791fde953d First simplify switch with known constant expression. 2019-03-06 21:32:55 +01:00
chriseth
21115f8050 Fix visitation order bug for structural simplifier. 2019-03-06 19:34:07 +01:00
Mathias Baumann
21322dae29 YulOpt: Remove empty cases 2019-03-06 19:02:23 +01:00
Mathias Baumann
3ce7069766 YulOpt: Remove empty cases 2019-03-06 18:39:44 +01:00
Mathias Baumann
f6e09d6368 YulOpt: Extend StructuralSimplifier to work with all types 2019-03-05 18:39:27 +01:00
chriseth
3f784d6e00 Do not prepend function name to all variables when inlining. 2019-03-04 18:07:00 +01:00
Christian Parpart
609855546e Yul: Adds optimizer pass to make variable names suffix-canonical. 2019-03-04 17:26:56 +01:00
Mathias Baumann
c686a65876 Yul Optimizer: reduce switches with const arguments 2019-02-28 15:43:10 +01:00
chriseth
477c53a46f Fix expression simplifying by moving from SSAValueTracker to DataFlowAnalyzer as a base. 2019-02-27 16:14:39 +01:00
chriseth
70bbdd8fac
Merge pull request #3464 from ethereum/iulia_interp
Yul interpreter
2019-02-25 15:38:41 +01:00
chriseth
94e2afff81 Rebase update. 2019-02-25 14:30:34 +01:00
chriseth
5eb155b894 Interpreter tests. 2019-02-25 11:58:36 +01:00
chriseth
7f5b335b47 Make EVM version part of EVM dialect. 2019-02-21 21:59:46 +01:00
Mathias Baumann
f395d5bab4 Add extra token for assembly assignment
Adding an extra token for := prevents whitespace between : = being valid
2019-02-21 13:58:21 +01:00
chriseth
968ca88690
Merge pull request #5872 from ethereum/semantic-tests-split
Semantic test infrastructure
2019-02-18 18:13:55 +01:00
chriseth
a344381d5e Provide access to AssemblyStack's AST. 2019-02-13 14:19:56 +01:00
Erik Kundt
190634e1f9 Implements infrastructure for semantic tests. 2019-02-13 13:05:58 +01:00