Commit Graph

200 Commits

Author SHA1 Message Date
mingchuan
db60d123d0 [YulOpt] Implement loop-invariant code motion 2019-11-28 11:59:29 +01:00
Leonardo Alt
2bfa3a7c97 Rewrite GenericVisitor 2019-11-26 15:55:06 +01:00
Leonardo Alt
be849b3c47 Replace boost::variant by std::variant in libyul 2019-11-19 17:23:18 +01:00
chriseth
e70ef0b820 Simplify patterns. 2019-11-15 00:34:01 +01:00
chriseth
fa02667075 Generalize instructions. 2019-11-07 14:33:34 +01:00
chriseth
02d5b7c18a Run literal rematerializer before for loop condition out of body. 2019-11-01 14:01:56 +01:00
chriseth
1cc5a03e42 Fix bug in unsimplifier. 2019-11-01 14:01:56 +01:00
chriseth
61a2d44f38 Conditional unsimplifier 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
Christian Parpart
df729b3084 Make use of C++17 std::optional<> instead of boost::optional<>. 2019-10-28 11:39:30 +01:00
chriseth
45705b0e29 Debug optimizer steps. 2019-10-16 14:06:18 +02:00
chriseth
9ce1ca2340 Refactor Optimiser Steps Interface. 2019-09-24 14:52:01 +02:00
mingchuan
520a3ccfff [YulOpt] declare SSA var when control flow joins 2019-09-17 13:22:02 +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
Bhargava Shastry
09fa31ccc5 yul: Add new optimizer rules for create and create2 builtins 2019-09-09 17:06:56 +02:00
chriseth
a8e8eaebcd Fix load resolver and properly take side-effects of user-defined
functions into account.
2019-09-04 19:16:54 +02:00
chriseth
edbec012ae Activate load resolver. 2019-09-04 19:16:54 +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
a2a06d0318 Side effects propagator. 2019-08-15 16:30:05 +02:00
chriseth
7d30fbdef0 Extract side effects into their own struct. 2019-08-14 15:06:10 +02:00
chriseth
e396dc7246 Properly set storage and memory after erasing potentially destroyed keys 2019-08-13 18:43:15 +02:00
chriseth
823f06625a
Merge pull request #7230 from ethereum/callgraph_generator
Callgraph generator.
2019-08-13 18:04:56 +02:00
chriseth
57125de9ef Remove ContainsMSize from side-effect-collector. 2019-08-13 13:34:33 +02:00
mingchuan
53af4e082e Callgraph generator. 2019-08-13 12:49:32 +02:00
mingchuan
46387eaea2 [Yul] ExpressionInliner: avoid duplicating high cost expressions 2019-08-05 11:48:32 +02:00
dm4
4dc368db3a
Fix typo in Yul optimizer 2019-07-22 16:25:47 +08:00
chriseth
a0a0a34a21 Do not overwrite allowMSizeOptimization 2019-07-16 10:13:18 +02:00
chriseth
869d69d293 Supply full object to stack compressor and Optimizer Suite. 2019-07-10 18:49:42 +02:00
chriseth
67f11104c1 EVM to eWasm translator. 2019-06-25 19:06:18 +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
d9d1c4a312
Merge pull request #6967 from ethereum/nameDisplacer
[Yul] Name displacer.
2019-06-19 18:56:54 +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
chriseth
aed979604c Fix unused pruner. 2019-06-18 17:40:18 +02:00
chriseth
6cb6fe35ef Make Yul optimizer not fail for wasm. 2019-06-17 18:42:47 +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
a3f721bbcc
Merge pull request #6583 from ethereum/reset_yulstringrepo
Reset YulStringRepository regularly
2019-05-28 14:20:53 +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
Bhargava Shastry
dbae0fa939 Reset Yul string repository before each compilation. 2019-05-28 13:12:39 +02:00
chriseth
d7b5ea6761 Allow msize optimization only if it is not present. 2019-05-28 12:54:32 +02:00
chriseth
afe887adc1 Split MovableChecker and introduce SideEffectsUpToMSize. 2019-05-28 12:54:32 +02:00