Leonardo Alt
a02308cfa5
Replace void cast by maybe_unused
2020-01-09 13:41:30 +01:00
chriseth
b8488597da
Combine value and loop depth.
2020-01-08 12:25:46 +01:00
chriseth
b5bd4787af
Merge pull request #7801 from ethereum/tuneRemat
...
Tune rematerializer
2020-01-08 10:41:32 +01:00
rodiazet
b8c59c56e0
[WASM] Add keccak256, balance, extcodecopy, blockhash, coinbase, log's, call, callcode, delegatecall, staticcall
2020-01-08 10:08:36 +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
Christian Parpart
345f9928ab
Library libdevcore renamed to libsolutil.
2020-01-07 15:51:50 +01:00
Christian Parpart
6b23412fae
C++ namespace cleanup (except tests).
2020-01-07 15:51:50 +01:00
chriseth
aab8b9bc36
Fix redundant assignment removal in combination with break / continue.
2019-12-29 15:53:47 +01:00
chriseth
7db88cfedd
Remove yul::Instruction
.
2019-12-19 23:22:19 +01:00
Alex Beregszaszi
65e59ecd06
Rename EWasm/ewasm/eWasm to Ewasm
2019-12-19 11:36:08 +00:00
rodiazet
d867f5339b
[WASM] add i64.clz and i64.store8 to Wasm dialect and EWasm interpreter.
...
dsads
2019-12-18 19:51:27 +01:00
Alex Beregszaszi
7effc94f24
Rename EVMToEWasmTranslator to EVMToEwasmTranslator
2019-12-18 16:57:45 +00:00
Alex Beregszaszi
018960ebb1
Rename EWasmObjectCompiler to WasmObjectCompiler
2019-12-18 15:59:31 +00:00
Alex Beregszaszi
cec45a7df5
Rename EWasmCodeTransform to WasmCodeTransform
2019-12-18 15:59:31 +00:00
Alex Beregszaszi
7d3ccee921
Fix implementation of getCodeSize in Ewasm
2019-12-18 14:58:28 +00:00
rodiazet
7d8c4c24ee
Add arithmetic test cases for most of EVM->Ewasm translator
2019-12-18 13:58:03 +01:00
chriseth
b6fc703a27
Merge remote-tracking branch 'origin/release' into HEAD
2019-12-17 19:47:59 +01:00
chriseth
7b84e141dc
Descend into for loops when determining call graph.
2019-12-17 13:47:51 +01:00
Alex Beregszaszi
1294c0df99
Rename EWasmAST to WasmAST
2019-12-11 12:08:38 +00:00
Alex Beregszaszi
ae7cc58b55
Rename EWasmToText to TextTransform
2019-12-11 12:08:38 +00:00
Alex Beregszaszi
fbf946e493
Add also smoke tests for opcodes not part of Ewasm
2019-12-10 17:00:45 +00:00
Alex Beregszaszi
7f40ca5a8f
Fix extcodecopy() stub in EVMToEWasm
2019-12-10 17:00:45 +00: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
chriseth
2f11ac3590
Merge remote-tracking branch 'origin/develop' into develop_060
2019-12-03 21:17:15 +01:00
chriseth
19a6f09cc8
Merge commit '4d2f20570' into develop_060
2019-12-03 21:01:31 +01:00
Alex Beregszaszi
7e8f0a17bc
Replace all solAsserts with yulAsserts in libyul
2019-12-03 17:54:34 +01:00
Mathias L. Baumann
a13416f4da
Merge pull request #7882 from ethereum/libyul-assert
...
Actually throw YulAssertion in yulAssert
2019-12-03 17:39:22 +01:00
Alex Beregszaszi
cab00755e8
Actually throw YulAssertion in yulAssert
2019-12-03 16:40:48 +01:00
Alex Beregszaszi
7ace66ad59
Remove last boost/variant include
2019-12-03 14:44:56 +01:00
chriseth
ccfc1840a9
Allow assembly stack to translate its source.
2019-11-28 16:15:15 +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
0bb88dabb7
Restrict usage of plain "new".
2019-11-27 17:55:11 +01:00
chriseth
9e9b643b93
Tune the suite.
2019-11-27 11:56:11 +01:00
chriseth
b0db64ff5b
Merge remote-tracking branch 'origin/develop' into develop_060
2019-11-26 16:19:35 +01:00
chriseth
40b4a876eb
Merge pull request #7778 from ethereum/generic_visitor_cpp17
...
Rewrite GenericVisitor
2019-11-26 16:09:38 +01:00
chriseth
6361e55e2c
Merge pull request #7785 from ethereum/exception-cleanup
...
A lot of tiny cleanups to exceptions
2019-11-26 15:55:11 +01:00
Leonardo Alt
2bfa3a7c97
Rewrite GenericVisitor
2019-11-26 15:55:06 +01:00
Alex Beregszaszi
991fbd2956
Replace uses of BOOST_THROW_EXCEPTION with assertThrow
...
Where appropriate.
2019-11-26 13:07:42 +01:00
Gaith Hallak
4a1e85436b
Allow splitting string literals into multiple parts
2019-11-26 14:41:30 +03:00
chriseth
a00f824479
Merge pull request #7773 from ethereum/develop
...
Merge develop into develop_060
2019-11-21 21:49:22 +01:00
chriseth
f2c6e47038
Merge pull request #7755 from ethereum/fixWasmTransform
...
Fix Wasm transform.
2019-11-20 18:27:21 +01:00
Leonardo Alt
72eff30778
Fix develop 060 merge
2019-11-20 13:49:40 +01:00
Leonardo Alt
389da5228e
Merge remote-tracking branch 'origin/develop' into merge_develop_060
2019-11-20 12:27:40 +01:00
chriseth
5deaac0849
Merge pull request #7740 from ethereum/istanbul
...
Enable support for Istanbul
2019-11-20 10:49:27 +01:00
chriseth
d358af6515
Fix Wasm transform.
2019-11-20 00:02:02 +01:00
Leonardo Alt
be849b3c47
Replace boost::variant by std::variant in libyul
2019-11-19 17:23:18 +01:00
Alex Beregszaszi
840aba8929
Add new gas price for deployed bytecode (EIP2028)
2019-11-19 17:09:18 +01:00
Erik K
94272d44aa
Merge pull request #7745 from ethereum/develop
...
Merge develop into develop_060
2019-11-19 15:30:31 +01:00
chriseth
e70ef0b820
Simplify patterns.
2019-11-15 00:34:01 +01:00
djudjuu
e437443645
Inline assembly to AST json export
2019-11-13 12:13:22 +01:00
Daniel Kirchner
8148619d5b
Merge branch 'develop' into develop_060
2019-11-12 10:32:41 +01:00
Mathias Baumann
e35a23bbcc
Add `switch (..)
to style checker
2019-11-11 17:44:21 +01:00
chriseth
2e5a42836c
Merge pull request #7681 from ethereum/develop
...
Merge develop into develop_060
2019-11-11 16:42:03 +01:00
Christian Parpart
f15d47f165
Yul: Remove obsoleted FunctionalInstruction.
2019-11-11 16:04:39 +01:00
chriseth
fa02667075
Generalize instructions.
2019-11-07 14:33:34 +01:00
chriseth
c0b27d0bc1
Merge pull request #7648 from ethereum/inlineAssemblyShadowing
...
Error on shadowing and invalid names in inline assembly
2019-11-07 13:31:09 +01:00
Daniel Kirchner
0556f64722
Analyze inline assembly variable declarations for invalid or shadowing names.
2019-11-07 13:04:37 +01:00
chriseth
64cad825e3
Fix build by adding return.
2019-11-06 22:16:06 +01:00
chriseth
21e65076b3
Merge pull request #7650 from ethereum/develop
...
Merge develop into develop_060
2019-11-06 21:56:55 +01:00
chriseth
e275bb88f0
Fix windows build.
2019-11-06 02:06:19 +01:00
chriseth
e79a32e9d5
Wasm to binary assembly stack.
2019-11-05 20:02:42 +01:00
chriseth
081845d775
EWasm binary transform.
2019-11-05 19:58:55 +01:00
chriseth
46ac16d25c
Merge remote-tracking branch 'origin/develop' into develop_060
2019-11-04 19:09:11 +01:00
chriseth
62aa20137c
Merge pull request #7600 from ethereum/TypeConversionOnTheFly
...
[WASM] Inject type conversions on the fly if needed.
2019-11-04 16:20:57 +01:00
Christian Parpart
cf82bc04d2
Fix compilation error on CI (due to "possibly uninitialized field member").
2019-11-04 13:45:26 +01:00
chriseth
a964a2026b
Merge pull request #7602 from ethereum/fixWasmTypes
...
Fix types of wasm builtins.
2019-11-04 13:04:25 +01:00
chriseth
8337de5189
[WASM] Inject type conversions on the fly if needed.
2019-11-01 15:44:39 +01:00
chriseth
8780f2d595
Merge pull request #7604 from ethereum/datasizeOffsetSingle
...
[WASM] datasize and dataoffset only return a single value.
2019-11-01 15:39:50 +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
chriseth
e1438b72ad
Fix types of wasm builtins.
2019-11-01 13:54:01 +01:00
chriseth
7f1593baa0
[WASM] datasize and dataoffset only return a single value.
2019-11-01 13:52:49 +01:00
Christian Parpart
112e63fe15
libyul: AST cleanup, eliminating dead Instruction AST type.
2019-11-01 12:32:25 +01:00
chriseth
21227d748c
Update polyfill and set name.
2019-10-31 18:51:19 +01:00
chriseth
42b8c98567
Merge remote-tracking branch 'origin/develop' into develop_060
2019-10-31 18:03:25 +01:00
chriseth
04c62e2dc3
Fix local and globals wast functions.
2019-10-31 17:41:31 +01:00
chriseth
d605f89167
Merge pull request #7548 from ethereum/fixWasmLayout
...
Wasm: Fix layout for text conversion.
2019-10-29 17:52:34 +01:00
chriseth
f98925d8b6
Remove `leave
` at end of function.
2019-10-29 14:32:16 +01:00
chriseth
ceb8ee9124
[Yul] leave statement.
2019-10-29 14:32:16 +01:00
chriseth
edf1e83fda
Merge remote-tracking branch 'origin/develop' into develop_060
2019-10-28 15:21:49 +01:00
chriseth
607bf24afe
Merge pull request #7386 from ethereum/060-strict-inline-assembly
...
Defaulting to strict inline assembly (instead of loose)
2019-10-28 12:48:58 +01:00
Christian Parpart
df729b3084
Make use of C++17 std::optional<> instead of boost::optional<>.
2019-10-28 11:39:30 +01:00
Christian Parpart
f45c3124f8
libyul: Small code improvements.
2019-10-25 15:39:44 +02:00
Christian Parpart
2890e4888f
AsmAnalyzer: Eliminate dead code.
2019-10-25 15:39:16 +02:00
Christian Parpart
ee5826b261
AsmAnalyzer: Improve warnOnInstructions(...) implementation.
2019-10-25 15:01:27 +02:00
Christian Parpart
2390b1bfd4
AsmParser: Fix error handling in function call parsing.
2019-10-25 15:01:27 +02:00
Christian Parpart
7fe0f58445
AsmAnalyzer: Only perform further analysis when still in success state (to avoid false positives)
2019-10-25 15:01:27 +02:00
Christian Parpart
a6e34bd441
Assembly: Revive warning on not-yet-available EVM instructions in (strict) inline assembly.
2019-10-25 15:01:26 +02:00
Christian Parpart
044eb2d161
Assembly: Finally removing AsmFlavour::Loose
2019-10-25 15:01:26 +02:00
Christian Parpart
3c1d12b16c
Assembly: Remove errorTypeForLoose property from AsmAnalyzer.
2019-10-25 15:01:26 +02:00
Christian Parpart
6659720776
Assembly: Remove checkLooseFeature(...) from AsmAnalyzer.
2019-10-25 15:01:26 +02:00
Christian Parpart
3df5dbbca4
Assembly: Remove some explicit checks for Loose Assembly
2019-10-25 15:01:26 +02:00
Christian Parpart
d659dbd49c
Assembly: Defaulting Dialect's flavor to Strict
2019-10-25 15:01:26 +02:00
Christian Parpart
dc2adb3d9d
Assembly: Removing EVMDialect::looseAssemblyForEVM().
2019-10-25 15:01:26 +02:00
Christian Parpart
fdbbf75e78
Assembly: Removing some more strict-assembly syntax from parser.
2019-10-25 15:01:26 +02:00
Christian Parpart
e23998fc6e
Assembly: Remove Label instruction.
2019-10-25 15:01:25 +02:00
Christian Parpart
5e8d348f66
Assembly: Remove StackAssignment instruction.
2019-10-25 15:01:25 +02:00
chriseth
f399d8415f
Fix layout for text conversion.
2019-10-23 16:43:29 +02:00
chriseth
f8ade0122a
Remove label from expression and add br_if.
2019-10-17 13:15:18 +02:00
chriseth
0657aff937
Remove continue from wasm.
2019-10-17 13:15:17 +02: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
Dimitry
fd3ae0b24a
add chainid and selfbalance to lllc
2019-09-09 23:35:36 +03: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
bb4e7de38c
Merge pull request #7234 from ethereum/extractSideEffects
...
[Yul] Extract side-effects into their own struct.
2019-08-14 16:00:17 +02:00
chriseth
7d30fbdef0
Extract side effects into their own struct.
2019-08-14 15:06:10 +02:00
Bhargava Shastry
ddc3ce0eae
Avoid aggregate initialization of EWasmToText class
2019-08-14 13:40:46 +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
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