chriseth
|
e396dc7246
|
Properly set storage and memory after erasing potentially destroyed keys
|
2019-08-13 18:43:15 +02:00 |
|
mingchuan
|
46387eaea2
|
[Yul] ExpressionInliner: avoid duplicating high cost expressions
|
2019-08-05 11:48:32 +02:00 |
|
chriseth
|
0c0b5a09cd
|
Add another test related to stack compressor and msize.
|
2019-07-18 16:40:46 +02:00 |
|
chriseth
|
a0a0a34a21
|
Do not overwrite allowMSizeOptimization
|
2019-07-16 10:13:18 +02:00 |
|
chriseth
|
2a5280faa0
|
Check availability of data objects already in analysis phase.
|
2019-07-10 18:49:42 +02:00 |
|
chriseth
|
e2bfb1a663
|
Translation of switch statement for wasm backend.
|
2019-06-27 13:02:35 +02:00 |
|
chriseth
|
f5f1b2649c
|
Adding forgotten test for load resolver.
|
2019-06-25 17:25:53 +02:00 |
|
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
|
d7b366ff46
|
Name displacer.
|
2019-06-19 14:55:38 +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
|
e5902c58a4
|
Merge pull request #6777 from sifmelcara/loop-cond-rewriter
[YulOpt] Implement ForLoopConditionIntoBody
|
2019-05-23 12:51:51 +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
|
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
|
6ee9ccf140
|
Test.
|
2019-05-09 17:36:40 +02:00 |
|
chriseth
|
3f55b52a88
|
Unify suffixes.
|
2019-05-09 17:07:18 +02:00 |
|
chriseth
|
0532a8cef2
|
Format short blocks and loops on a single line.
|
2019-05-08 13:28:00 +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
|
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 |
|
chriseth
|
aad4373da4
|
Disable redundent assign eliminator for deeply nested loops.
|
2019-04-23 09:50:25 +02: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 |
|
mingchuan
|
d49733dfc3
|
Fix variable decl scope issue in DeadCodeEliminator
FoorLoopInitRewriter needs to be run before DeadCodeEliminator.
|
2019-04-10 19:00:29 +08:00 |
|
chriseth
|
d20b3c9f9f
|
Function grouper is a requirement for the VarNameCleaner.
|
2019-04-05 13:41:38 +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 |
|
Mathias Baumann
|
e20acf5d0a
|
Yul Optimizer: Remove dead code
|
2019-04-01 17:16:04 +02: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
|
57f99247c8
|
Update tests.
|
2019-03-20 15:07:05 +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 |
|
Christian Parpart
|
57bcb8ba83
|
[yul] Ensures DataFlowAnalyzer works fine with break/continue statements just like without.
|
2019-03-14 16:18:45 +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
|
83083d2208
|
Stack compressor.
|
2019-02-11 15:48:29 +01:00 |
|
chriseth
|
5a34743d88
|
Allow optimizer steps to run on FunctionDefinition and group suite.
|
2019-02-11 15:48:29 +01:00 |
|
chriseth
|
12e2187661
|
Some tuning.
|
2019-01-24 23:06:01 +01:00 |
|
Daniel Kirchner
|
29f66b2674
|
Stabilize SSAReverser.
|
2019-01-17 21:05:32 +01:00 |
|
Daniel Kirchner
|
fd16585724
|
Undo second SSA transformation and add more tests.
|
2019-01-17 20:37:43 +01:00 |
|
Daniel Kirchner
|
6de2d92f20
|
Add SSAReverser to the yul optimiser.
|
2019-01-17 20:37:43 +01:00 |
|
Daniel Kirchner
|
81f24f24e6
|
Add equivalent function combiner as Yul optimizer step.
|
2019-01-15 17:21:03 +01:00 |
|
chriseth
|
b7ef850955
|
Update tests.
|
2019-01-09 16:57:33 +01:00 |
|
chriseth
|
9244b8ea5a
|
More code for optimizer tuning.
|
2019-01-08 18:07:14 +01:00 |
|
chriseth
|
5b8b016fae
|
Use the block flattener.
|
2019-01-08 16:02:14 +01:00 |
|
chriseth
|
884d51c1f2
|
Merge pull request #5759 from ethereum/anotherBigTest
Another ABI test case for the optimizer.
|
2019-01-08 16:01:41 +01:00 |
|
chriseth
|
2d19903d1a
|
Another ABI test case for the optimizer.
|
2019-01-08 15:14:45 +01:00 |
|
chriseth
|
f5b24a38b8
|
Make function grouper idempotent.
|
2019-01-08 15:05:09 +01:00 |
|
chriseth
|
6414d63906
|
Merge pull request #5716 from ethereum/fixDataSizeOffset
Fix data size offset and properly provide builtins.
|
2019-01-08 00:07:42 +01:00 |
|
chriseth
|
ace601b8f6
|
Tests.
|
2019-01-07 17:23:38 +01:00 |
|
chriseth
|
b604b87272
|
Add AZTEK code as test.
|
2019-01-07 16:23:35 +01:00 |
|
chriseth
|
2e9c70add0
|
Use rematerializer if variable is unreferenced or value is "cheap".
|
2019-01-07 14:03:32 +01:00 |
|
chriseth
|
bc22a25a60
|
Remove VarDeclPropagator.
|
2018-12-13 16:51:10 +01:00 |
|
chriseth
|
6c6a53a439
|
Do not create unassigned variables.
|
2018-12-13 16:51:10 +01:00 |
|
chriseth
|
11209ec48a
|
Add variable declaration initializer.
|
2018-12-13 16:49:04 +01:00 |
|
chriseth
|
b11d413720
|
Consider return variables to be zero initially.
|
2018-12-13 16:02:30 +01:00 |
|
chriseth
|
60a368244a
|
Do not inline into already big functions.
|
2018-12-13 12:12:54 +01:00 |
|
chriseth
|
9557dd7e74
|
Support unassigned variables in the SSA value tracker and the data flow analyzer.
|
2018-12-12 18:06:28 +01:00 |
|
Daniel Kirchner
|
1eb60cbb39
|
Add structural simplifier as optimization step for Yul.
|
2018-12-06 18:37:35 +01:00 |
|
Mathias Baumann
|
f4e9c70ecc
|
Tests for SSAValueTracker ignoring function call on rhs
|
2018-12-05 18:01:41 +01:00 |
|
Mathias Baumann
|
5d31ad2daf
|
Test for unhandled default values in expression simplifier
|
2018-12-05 11:43:02 +01:00 |
|
Daniel Kirchner
|
1b8a013d4a
|
Properly recurse in ForLoopInitRewriter
|
2018-12-04 13:36:25 +01:00 |
|
Christian Parpart
|
f705a45d43
|
[Yul] Implements a pass to rewrite for-loop's pre block into the parent's Block.
|
2018-11-16 13:15:41 +01:00 |
|
chriseth
|
2e025cf917
|
Update tests.
|
2018-11-13 13:33:33 +01:00 |
|
chriseth
|
9c6048b0b8
|
Merge pull request #5333 from ethereum/joinPerformance
[Yul] Use map join algorithm for performance.
|
2018-11-13 12:15:11 +01:00 |
|
Daniel Kirchner
|
74557ceb0e
|
Deterministic YulStringRepository using string hashes.
|
2018-11-12 23:43:16 +01:00 |
|
chriseth
|
b1454433b2
|
Remove variables that go out of scope from data structure.
|
2018-11-12 23:00:37 +01:00 |
|
chriseth
|
faa7b61d76
|
Use map join algorithm for performance.
|
2018-11-12 23:00:37 +01:00 |
|
chriseth
|
af65bac737
|
Remove trailing whitespace.
|
2018-11-12 09:15:22 +01:00 |
|
chriseth
|
5ea514213a
|
Test case that shows that break/unbreak are more or less inverse.
|
2018-11-09 15:36:52 +01:00 |
|
chriseth
|
fa44d20721
|
Remove side-effect-free statements.
|
2018-11-08 18:14:36 +01:00 |
|
chriseth
|
cd11f7cfac
|
Merge pull request #5325 from ethereum/fixDataFlow
[Yul] Fix data flow analyzer for function definitions.
|
2018-11-08 12:52:51 +01:00 |
|
chriseth
|
845899e305
|
Use single counter for name dispenser for performance reasons.
|
2018-11-07 23:09:33 +01:00 |
|
chriseth
|
b2b11eaa00
|
Fix data flow analyzer for function definitions.
|
2018-11-07 20:32:55 +01:00 |
|
Christian Parpart
|
f08ab77249
|
Yul: Implements empty-var-decl-propagation
|
2018-10-26 13:13:57 +02:00 |
|
chriseth
|
60f1d52f59
|
Full suite tests.
|
2018-10-24 18:02:08 +02:00 |
|
chriseth
|
b3911798b3
|
Redundant assign eliminator.
|
2018-10-24 13:24:25 +02:00 |
|
chriseth
|
c676b009e1
|
Merge pull request #5267 from ethereum/ssatransform
SSA transform - first step.
|
2018-10-19 11:10:08 +02:00 |
|
chriseth
|
5c274a9251
|
Merge pull request #5260 from ethereum/flattenMore
Flatten more.
|
2018-10-19 11:08:46 +02:00 |
|
chriseth
|
0ebe572f7d
|
Merge pull request #5258 from ethereum/coverage2
Add some simplification tests for operations.
|
2018-10-19 11:04:56 +02:00 |
|
chriseth
|
465845b7a7
|
SSA transform - first step.
|
2018-10-18 18:56:22 +02:00 |
|
chriseth
|
48749146da
|
Fix a bug in CSE where a variable that was already out of scope was used.
|
2018-10-18 14:55:51 +02:00 |
|
chriseth
|
c34fa43d5b
|
Test case that shows a CSE bug related to scopes.
|
2018-10-18 14:54:23 +02:00 |
|
chriseth
|
e8a2d57075
|
Flatten more.
|
2018-10-18 00:58:15 +02:00 |
|
chriseth
|
bda154440c
|
Add some simplification tests for operations.
|
2018-10-18 00:10:39 +02:00 |
|
chriseth
|
7609e2871e
|
Merge pull request #5240 from ethereum/limitDispenserSize
[Yul] Limit name length created by dispenser
|
2018-10-17 22:54:38 +02:00 |
|
chriseth
|
732d09cef1
|
Limit size of generated names and add convenience constructors.
|
2018-10-17 17:21:55 +02:00 |
|
chriseth
|
9fb5feed05
|
Use metrics in the full inliner.
|
2018-10-17 14:11:20 +02:00 |
|
chriseth
|
2ab6430303
|
Inline each function separately.
|
2018-10-16 17:32:21 +02:00 |
|
chriseth
|
a435a14e13
|
Test for crash via inlining.
|
2018-10-16 17:29:20 +02:00 |
|
chriseth
|
e2e4a9fe81
|
New full inliner.
|
2018-10-16 17:16:03 +02:00 |
|
chriseth
|
ffe44536fe
|
Add a "full simplify" test that applies multiple elementary transforms.
|
2018-10-16 16:18:39 +02:00 |
|
Christian Parpart
|
04612936c2
|
Yul: Introduces a block flattening pass + tests
|
2018-10-15 18:21:34 +02:00 |
|
chriseth
|
0664772ece
|
Some renaming leftovers.
|
2018-10-15 12:51:50 +02:00 |
|
Christian Parpart
|
9a4bec7e47
|
Renaming libjulia to libyul
|
2018-10-15 11:52:35 +02:00 |
|