Commit Graph

431 Commits

Author SHA1 Message Date
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