chriseth
|
a3a9630d8b
|
Optimize byte-after-shr for shift amounts that are not multiples of 8.
|
2020-08-04 12:16:23 +02:00 |
|
Bhargava Shastry
|
5100effeec
|
yul: Set non movable flag to true in simplification rule for byte of right-shifted expression
|
2020-08-03 17:30:52 +02:00 |
|
chriseth
|
711ed588d7
|
Require for loop init rewriter for SSA.
Co-authored-by: Harikrishnan Mulackal <webmail.hari@gmail.com>
|
2020-07-03 19:24:31 +02:00 |
|
chriseth
|
e0b1d8b9bd
|
Make DataFlowAnalyzer aware of storage / memory slot after sload / mload.
|
2020-07-01 13:45:25 +02:00 |
|
chriseth
|
a06ac0f39f
|
Merge pull request #8958 from ethereum/evm-version-dependent-rules
[yul] Add support for EVM version-dependent rules.
|
2020-05-27 12:52:51 +02:00 |
|
Christian Parpart
|
b7fa5d5040
|
Mark EVM instruction pc() as deprecated when used in inline assembly.
|
2020-05-27 12:07:23 +02:00 |
|
Alexander Arlt
|
a7b89065ca
|
[yul] Add support for EVM version-dependent rules.
|
2020-05-27 11:57:08 +02:00 |
|
chriseth
|
d136e7dc95
|
Rules for optimizing idempotency for bitwise operations.
|
2020-04-23 14:21:00 +02:00 |
|
a3d4
|
3b9e926559
|
Moved "step" from settings to expectations.
|
2020-03-19 13:59:05 +01:00 |
|
Djordje Mijovic
|
c891597204
|
Adding ssa type check and test for that one
|
2020-02-24 15:05:19 +01:00 |
|
Djordje Mijovic
|
2efda4129b
|
Adding test for multi return values including bool in evmTyped dialect. Calling zeroLiteralForType from inliner
|
2020-02-24 15:05:19 +01:00 |
|
chriseth
|
bddbcbe6a4
|
Use bool type in word size transform.
|
2020-02-24 15:05:19 +01:00 |
|
chriseth
|
a52305d3bd
|
Use bool type in conditional simplifier and for loop condition into body.
|
2020-02-24 15:05:19 +01:00 |
|
Djordje Mijovic
|
a52c9af5b9
|
Adding vardecl optimization for boolean types
|
2020-02-24 15:05:19 +01:00 |
|
chriseth
|
b9b36cd89e
|
Properly assign types in ExpressionSplitter.
|
2020-02-24 15:05:19 +01:00 |
|
chriseth
|
6eec968365
|
Test updates.
|
2020-02-24 15:05:18 +01:00 |
|
Gaith Hallak
|
24d6702986
|
[Yul] Prune functions that call each other but are otherwise unreferenced
|
2020-02-11 20:39:32 +03:00 |
|
chriseth
|
23667ce12d
|
Update Yul optimizer tests.
|
2020-01-29 17:25:25 +01:00 |
|
chriseth
|
40c0602b5c
|
Do not rematerialize in loops.
|
2020-01-08 09:56:08 +01:00 |
|
chriseth
|
25d3f27c11
|
Tune Rematerializer
|
2020-01-08 09:56:08 +01:00 |
|
chriseth
|
3994c9135f
|
Tests.
|
2019-12-29 15:53:47 +01:00 |
|
chriseth
|
1e59c19166
|
Dialect setting for yul optimizer tests.
|
2019-12-18 21:54:30 +01:00 |
|
chriseth
|
b6fc703a27
|
Merge remote-tracking branch 'origin/release' into HEAD
|
2019-12-17 19:47:59 +01:00 |
|
chriseth
|
244b011a30
|
More test cases.
|
2019-12-17 17:08:27 +01:00 |
|
chriseth
|
143471fe87
|
Tests.
|
2019-12-17 15:47:32 +01:00 |
|
chriseth
|
42d9a8e962
|
Merge remote-tracking branch 'origin/develop' into develop_060
|
2019-12-04 17:01:44 +01:00 |
|
chriseth
|
bbeb093abf
|
Detect loops in call graph generator.
|
2019-12-03 21:38:20 +01:00 |
|
Daniel Kirchner
|
025a696bb0
|
Fix unrelated test failure.
|
2019-11-28 20:01:36 +01:00 |
|
chriseth
|
f7fc42d8c3
|
Merge pull request #7826 from ethereum/develop
Merge develop into develop_060
|
2019-11-28 13:37:19 +01:00 |
|
chriseth
|
301215f186
|
Merge pull request #7461 from sifmelcara/licm
[YulOpt] Implement loop-invariant code motion
|
2019-11-28 12:00:19 +01:00 |
|
mingchuan
|
db60d123d0
|
[YulOpt] Implement loop-invariant code motion
|
2019-11-28 11:59:29 +01:00 |
|
chriseth
|
1ebcc757e1
|
Merge remote-tracking branch 'origin/develop' into develop_060
|
2019-11-27 19:14:08 +01:00 |
|
chriseth
|
9e9b643b93
|
Tune the suite.
|
2019-11-27 11:56:11 +01:00 |
|
chriseth
|
46ac16d25c
|
Merge remote-tracking branch 'origin/develop' into develop_060
|
2019-11-04 19:09:11 +01:00 |
|
chriseth
|
cca7f01199
|
Tests for conditional unsimplifier
|
2019-11-01 14:07:25 +01:00 |
|
chriseth
|
ce87f11885
|
Test updates
|
2019-11-01 14:01:56 +01:00 |
|
chriseth
|
61a2d44f38
|
Conditional unsimplifier
|
2019-11-01 14:01:56 +01:00 |
|
chriseth
|
21b9606ed3
|
Test updates.
|
2019-11-01 14:01:56 +01:00 |
|
chriseth
|
19ccdfb0b3
|
No into body.
|
2019-11-01 14:01:56 +01:00 |
|
chriseth
|
5d6e983be3
|
Conditional simplifier.
|
2019-11-01 14:01:56 +01:00 |
|
chriseth
|
499fe57d33
|
Tests
|
2019-10-29 14:32:16 +01:00 |
|
mingchuan
|
520a3ccfff
|
[YulOpt] declare SSA var when control flow joins
|
2019-09-17 13:22:02 +02:00 |
|
chriseth
|
5859a69c44
|
Merge pull request #7409 from ethereum/forLoopOutOfBody
[Yul] Move for loop condition out of body.
|
2019-09-17 12:58:56 +02:00 |
|
chriseth
|
68986a58b6
|
Test.
|
2019-09-17 12:32:46 +02:00 |
|
chriseth
|
7a79742f3d
|
Out of body again.
|
2019-09-17 12:30:15 +02:00 |
|
chriseth
|
2d601a4f23
|
Merge pull request #7414 from ethereum/refactorSSA
Refactor SSA transform.
|
2019-09-13 17:55:39 +02:00 |
|
chriseth
|
20bada4c60
|
Refactor SSA transform.
|
2019-09-12 20:07:39 +02:00 |
|
Daniel Kirchner
|
f86c5da202
|
Fix SSA reverser in special case of declaration followed by self-assignment.
|
2019-09-12 18:17:13 +02:00 |
|
chriseth
|
4f80117eef
|
Use builtin iszero for for loop condition rewriting.
|
2019-09-12 10:26:16 +02:00 |
|
chriseth
|
fcfe829534
|
Introduce LiteralRematerializer and thus simplify StructuralSimplifier.
|
2019-09-11 19:50:24 +02:00 |
|
chriseth
|
20f6fbf88e
|
Load resolver involving staticcall.
|
2019-09-10 12:09:13 +02:00 |
|
Bhargava Shastry
|
09fa31ccc5
|
yul: Add new optimizer rules for create and create2 builtins
|
2019-09-09 17:06:56 +02:00 |
|
chriseth
|
633932c5f1
|
Update tests.
|
2019-09-04 19:16:54 +02:00 |
|
chriseth
|
55024d40fe
|
Test updates.
|
2019-09-02 17:41:51 +02:00 |
|
chriseth
|
127bcfc69d
|
Take user function side-effects into account for unused pruner.
|
2019-09-02 17:41:51 +02:00 |
|
chriseth
|
1c5845e3f2
|
Side-effects of user-defined functions.
|
2019-09-02 17:41:51 +02:00 |
|
chriseth
|
e86b5cf14e
|
Replace byte(A, X) by zero if A >= 32
|
2019-08-29 15:35:34 +02:00 |
|
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 |
|