chriseth
15cba9163e
Merge pull request #7106 from ethereum/fixMSizeOpt
...
Do not overwrite allowMSizeOptimization
2019-07-17 18:17:40 +02:00
chriseth
35ca6ef5ed
Merge pull request #7079 from ethereum/moreWorkOnEWasmExternals
...
Add eWasm externals.
2019-07-16 14:51:43 +02:00
chriseth
a0a0a34a21
Do not overwrite allowMSizeOptimization
2019-07-16 10:13:18 +02:00
chriseth
6c31a5f3dd
Improve formatting.
2019-07-11 17:37:23 +02:00
chriseth
e3433aa4eb
Add eWasm externals.
2019-07-11 17:37:23 +02:00
chriseth
869d69d293
Supply full object to stack compressor and Optimizer Suite.
2019-07-10 18:49:42 +02:00
chriseth
2a5280faa0
Check availability of data objects already in analysis phase.
2019-07-10 18:49:42 +02:00
Christian Parpart
7ba9537ae1
yul::reindent() to reindent with spaces instead of tabs (width: 4)
2019-07-08 11:43:11 +02:00
chriseth
4976b3ec67
More work on eWasm polyfill.
2019-07-01 13:05:20 +02:00
chriseth
d9db193249
Provide meta-information about eWasm builtins.
2019-07-01 13:01:18 +02:00
chriseth
e2bfb1a663
Translation of switch statement for wasm backend.
2019-06-27 13:02:35 +02:00
chriseth
8cd197e572
Support "datasize" and "dataoffset" with literals in eWasm.
2019-06-25 19:07:38 +02:00
chriseth
67f11104c1
EVM to eWasm translator.
2019-06-25 19:06:18 +02:00
chriseth
a3e816e198
Merge pull request #6807 from ethereum/storageKnowledge
...
Knowledge about storage and memory.
2019-06-24 14:09:21 +02:00
Christian Parpart
0fd1db533e
yul: adds reindent() function to reindent yul source code and makes use of it in IRGenerator.
...
This function does count curly and round braces and reindents
accordingly the beginning of each line.
It does consider line-comments (// and ///) but not multiline comments (/* ... */).
2019-06-24 12:53:50 +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
d4a6844e64
Merge pull request #6970 from ethereum/ewasmBoilerplate
...
Some eWasm boilerplate code.
2019-06-19 19:12:48 +02:00
chriseth
d9d1c4a312
Merge pull request #6967 from ethereum/nameDisplacer
...
[Yul] Name displacer.
2019-06-19 18:56:54 +02:00
chriseth
b704abdd75
Some eWasm boilerplate code.
2019-06-19 18:21:58 +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
5675b742ec
Merge pull request #6960 from ethereum/fixAsmParser
...
Asm Parser: Properly consider tokens when checking for clashes with builtins.
2019-06-19 10:57:46 +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
211cd2a0b3
Fix Asm parser.
2019-06-18 18:54:34 +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
Daniel Kirchner
6368cd4c82
AsmParser: disallow trailing commas in function call arguments.
2019-06-06 13:16:27 +02:00
Christian Parpart
b80cc42a7c
yul: AsmPrinter fix when appending type name but no type-name is available.
2019-06-05 11:57:16 +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
chriseth
cee1340113
Add mini-interpreter to check representation.
2019-05-28 11:35:07 +02:00
chriseth
1c16124a09
Constant optimiser for Yul.
2019-05-28 11:35:07 +02:00
chriseth
4407af53b5
Gas meter for Yul expressions.
2019-05-28 11:34:47 +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
8569c2bba7
Merge pull request #6819 from ethereum/noRecursiveRematCompressor
...
Do not rematerialize recursively.
2019-05-23 12:49:23 +02:00
chriseth
0f146ce55a
Do not rematerialize recursively.
2019-05-23 12:03:39 +02:00
chriseth
97fa21841d
Use different way to fall back to FunctionalInstruction for loose assembly.
2019-05-23 11:30:12 +02:00
chriseth
9a00729ce7
Provide dialect to Parser and InlineAssembly AST nodes.
2019-05-23 00:24:58 +02:00
chriseth
fb2b3bb2b9
Reduce misleading stack height error message.
2019-05-23 00:24:58 +02:00
chriseth
1e3878121a
Do not inline recursive functions.
2019-05-22 18:15:21 +02:00
mingchuan
a86b00e8d0
[YulOpt] Implement ForLoopConditionIntoBody
2019-05-22 21:32:18 +08:00
chriseth
1dc15d5864
Modify parser and optimizer.
2019-05-20 17:32:56 +02:00
chriseth
46d9df7574
Add EVM opcodes as builtins.
2019-05-20 16:46:31 +02:00
chriseth
003c170989
Add EVM instructions as builtin functions.
2019-05-20 16:46:31 +02:00
chriseth
8daa281d3d
Merge pull request #6776 from ethereum/equivalentFunctionHashes
...
Use block hashes in EquivalentFunctionDetector.
2019-05-20 14:35:39 +02:00
chriseth
0731abd3f6
Merge pull request #6782 from ethereum/makeVectorEWasmCodeTransform
...
Use make_vector in EWasmCodeTransform.
2019-05-20 13:07:56 +02:00
Daniel Kirchner
39670abe4d
Use make_vector in EWasmCodeTransform.
2019-05-17 14:13:43 +02:00
chriseth
4f3b7b232b
Merge pull request #6774 from ethereum/dialectRefactor
...
Dialect refactor
2019-05-17 14:00:09 +02:00
chriseth
4bdb981224
Make dialect const& and allocate single instances statically.
2019-05-17 12:54:24 +02:00
Daniel Kirchner
05c210772a
Make use of make_vector where possible.
2019-05-17 10:08:53 +02:00
Daniel Kirchner
3c66a56e60
Use block hashes in EquivalentFunctionDetector.
2019-05-17 08:39:42 +02:00
chriseth
570db164c9
Make Dialect const.
2019-05-16 21:51:54 +02:00
chriseth
9a387380b3
Move generation of builtin functions to helper.
2019-05-16 21:51:54 +02:00
chriseth
7de150924c
Extract subIDs from Dialect to allow it being const.
2019-05-16 21:51:54 +02:00
chriseth
aa24e12054
Remove side-effect-free expressions, and not only movable expressions.
2019-05-16 12:30:05 +02:00
chriseth
e8a88b13e4
Introduce side-effect-free as relaxed version of movable.
2019-05-16 12:30:05 +02:00
Daniel Kirchner
a10501bb7d
Merge pull request #6725 from AndreyBronin/develop
...
GCC 9.1 build fix. error: redundant move in return statement
2019-05-15 11:37:20 +02:00
Andrey Bronin
4eb37fe631
fix warning in GCC 9.1: redundant move in return statement
2019-05-14 17:44:28 +03:00
chriseth
439a225cee
Simplify single-run for loops to if statements.
2019-05-13 18:58:36 +02:00
chriseth
99e96c2d66
Refactor termination detection.
2019-05-13 18:58:36 +02:00
chriseth
d9831c8b96
Split structural simplifier.
2019-05-13 10:26:57 +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
0532a8cef2
Format short blocks and loops on a single line.
2019-05-08 13:28:00 +02:00
chriseth
7ab8cc60c9
Merge pull request #6556 from ethereum/wasmCodeTransform
...
Prototype for Wasm code transform
2019-05-07 17:48:48 +02:00
mingchuan
f7ccdb6447
Implement WordSizeTransform
...
This transformation turns every u256 variable into four u64 variable.
Purpose is to transpile EVMDialect yul to WasmDialect yul.
2019-05-03 01:51:56 +08:00
chriseth
01d1d08fea
Implement switch.
2019-05-02 18:39:54 +02:00
chriseth
c3705f268c
Add global variables and support multi-return and multi-assignment.
2019-05-02 18:37:13 +02:00
chriseth
61e36cbfaa
Activate ewasm dialect in commandline interface.
2019-05-02 18:36:48 +02:00
chriseth
f6c6871bce
EWasm to text transformation.
2019-05-02 18:36:47 +02:00
chriseth
ec27f484a1
Prototype for Wasm code transform into in-memory representation.
2019-05-02 18:33:59 +02:00
chriseth
d763e09f07
Merge pull request #6547 from ethereum/wasmPrototype
...
[Yul] Wasm dialect.
2019-04-29 10:11:14 +02: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
ec0b78595d
[Yul] Wasm dialect.
2019-04-25 17:27:17 +02:00
chriseth
cdf60c3be8
Merge pull request #6593 from ethereum/catchFatalErrorsInAnalysis
...
[Yul] Catch fatal errors in analysis.
2019-04-25 17:08:46 +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
d5c54e9107
[Yul] Catch fatal errors in analysis.
2019-04-25 11:34:56 +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
chriseth
b02fbc5d02
Merge pull request #6503 from ethereum/inlineAsm-yul
...
Inline asm yul
2019-04-18 17:15:09 +02:00
Mathias Baumann
3d061c83d7
IR: Generate inline asm blocks
2019-04-18 16:49:19 +02:00
dm4
b2c812c794
[libyul] fix typo
2019-04-18 19:07:06 +08: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
mingchuan
d49733dfc3
Fix variable decl scope issue in DeadCodeEliminator
...
FoorLoopInitRewriter needs to be run before DeadCodeEliminator.
2019-04-10 19:00:29 +08:00