Daniel Kirchner
b580106c80
Yul parser hack and more yul tests.
2020-05-05 17:23:41 +02:00
Mathias Baumann
debcc8c056
Add setimmutable and loadimmutable to dialect.
2020-05-04 15:00:50 +02:00
Kamil Śliwak
c41a832f65
Move the default optimisation steps from OptimiserSuite to OptimiserSettings
...
- Now it's a mandatory parameter in OptimiserSuite::run()
2020-04-24 17:30:56 +02:00
Kamil Śliwak
69b79f848b
OptimiserSuite: Allow validating the optimisation sequence without executing it
...
- Create a separate validateSequence() that can be used independently.
- Tweak the exception messages a bit to be usable as command-line errors
2020-04-24 17:30:56 +02:00
Kamil Śliwak
e2c0e6331c
OptimiserSuite: Define NonStepAbbreviations and use it for extra sanity checks
2020-04-24 17:30:56 +02:00
Kamil Śliwak
5a515240ac
OptimiserSuite: Use brackets instead of parentheses as syntax for repeating abbreviation sequences
...
- We want to start accepting abbreviation sequences on the command line and parentheses would always have to be escaped in that context.
- There wasn't any important reason behind choosing () rather than [] or {} and it still isn't too late to switch.
2020-04-24 17:30:56 +02:00
chriseth
f82f167290
Yul formatting: Reduce multiple consecutive empty lines to a single one.
2020-04-23 13:49:12 +02:00
Kamil Śliwak
9db7d2bde9
OptimiserSuite: Replace full step names in run() with abbreviations
2020-04-16 16:09:15 +02:00
Kamil Śliwak
9d7df5db69
OptimiserSuite: Add a variant of runSequence() that works with a string of abbreviations
2020-04-16 16:09:15 +02:00
Kamil Śliwak
1b4e06605d
OptimiserSuite: Extract the code for repeating a sequence into runSequenceUntilStable()
...
- Define a constant for the maximum number of repeats of the optimisation string
2020-04-16 15:23:38 +02:00
Alexander Arlt
aac7a1e434
Apply modernize-pass-by-value.
2020-04-14 10:32:13 -05:00
chriseth
a7a1feb1b8
Merge pull request #8626 from ethereum/immutable-functioncallgraph
...
Prepare literalArguments for immutable builtin functions
2020-04-09 15:46:02 +02:00
Mathias Baumann
5203503583
Allow for per-parameter literalValues builtin functions
2020-04-08 16:41:38 +02:00
chriseth
823a119117
Merge pull request #8570 from aarlt/clang-tidy-apply-modernize-use-emplace
...
clang-tidy: Apply modernize-use-emplace.
2020-04-07 17:28:50 +02:00
Alexander Arlt
cae6e7769f
Apply modernize-use-override.
2020-04-02 18:00:44 -05:00
Alexander Arlt
90bb1d8a7c
Apply modernize-use-emplace.
2020-04-02 17:35:48 -05:00
Daniel Kirchner
04d8ad2ae1
Legacy codegeneration for immutable state variables.
2020-03-24 16:45:25 +01:00
Leonardo Alt
89ce2dbfe9
The identifier var
should be fine in Yul
2020-03-11 18:45:08 +01:00
chriseth
a3d5af30c6
Mention ControlFlowSideEffects explicitly to ease the burden on MSVC.
2020-03-10 12:55:23 +01:00
Daniel Kirchner
809e3503ba
Control flow analysis for inline assembly.
2020-03-09 16:23:10 +01:00
Djordje Mijovic
ec083c4878
Adding source location support to AssemblyStack and thus debugging Yul sources
2020-02-25 22:19:03 +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
6b272faec0
Some wasm related type fixes.
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
e75cace78d
Properly assign types in control flow simplifier.
2020-02-24 15:05:19 +01:00
chriseth
e728cd76b6
Introduce typed named functions to dialect.
2020-02-24 15:05:19 +01:00
chriseth
b9b36cd89e
Properly assign types in ExpressionSplitter.
2020-02-24 15:05:19 +01:00
chriseth
915cb65106
Collect types together with names.
2020-02-24 15:05:19 +01:00
chriseth
1f51716227
Type checking for Yul.
2020-02-24 15:05:18 +01:00
Jason Cobb
6db0d50094
Don't use identifiers starting with an underscore followed by an uppercase letter
2020-02-17 12:44:39 -05:00
chriseth
29e5cd89be
Remove stack counting from Asm Analysis.
2020-02-17 12:58:05 +01:00
chriseth
814d4b6690
Merge pull request #8293 from ethereum/fixTypedEVMTypes
...
Fix builtin function types for typed evm dialect.
2020-02-12 16:16:35 +01:00
chriseth
0e100e7e7e
Merge pull request #8267 from ghallak/prune-unnecessary-funcs
...
[Yul] Prune functions that call each other but are otherwise unreferenced
2020-02-12 11:09:27 +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
4644d4616f
Fix builtin function types for typed evm dialect.
2020-02-11 17:17:41 +01:00
Mathias Baumann
1a3998648c
Run yul optimizer on user code without refs
2020-02-11 13:55:47 +01:00
a3d4
4ec4d23886
Replaced ParserBase::position() and ParserBase::endPosition() with ParserBase::currentLocation().
...
It might be simpler to pass `SourceLocation` object instead of splitting it into `start` and `end`, and creating another SourceLocation object using the same `start` and `end` later.
2020-02-06 03:34:49 +01:00
a3d4
7fecab07a8
Simplified Parser::createWithLocation().
...
In all but one case the function was called with the default argument value.
And when it was location, the location should be valid (see Parser::parseElementaryOperation()).
2020-02-06 03:34:48 +01:00
chriseth
48933df18d
Add some missing wasm functions.
2020-02-04 22:44:08 +01:00
chriseth
c41ef15a86
Fix types for polyfill.
2020-02-04 22:44:08 +01:00
chriseth
8f546849f2
Add i32 functions to wasm dialect.
2020-02-04 22:44:08 +01:00
chriseth
7cca036f4c
Merge pull request #8224 from a3d4/refactor-sourcelocation
...
Replaced SourceLocation::isEmpty() with isValid() and hasText().
2020-02-04 22:23:51 +01:00
chriseth
d3739fe620
Fix WordSizeTransform to properly assign default types.
2020-02-04 18:13:37 +01:00
chriseth
9f0cef97c2
Specify default type for word size transform externally.
2020-02-04 18:13:37 +01:00
chriseth
967ce8dd51
Merge pull request #8215 from imapp-pl/yul-optimiser-step-abbreviations
...
Yul optimiser step abbreviations
2020-02-03 14:03:32 +01:00
chriseth
7496598b5a
Merge pull request #8155 from ethereum/removeStackHeightChecks
...
Remove stack height checks.
2020-02-03 12:28:37 +01:00
cameel
4e7c1c7876
OptimiserSuite: Add two maps for converting between step names and abbreviations
...
- Abbreviations match those used in yulopti.
- I considered using boost::bimap but I think it would be an overkill. Two simple maps are good enough in a situation where data is constant and there isn't much of it.
- I could also use InvertibleMap from libsolutil but I don't even need any of its methods since my map is a constant. I also don't need the inverted map to store sets because my values are unique.
- The reverseMap() is generic enough to be moved to some global file with utilities but I don't sure if it's going to actually be useful to others in practice.
2020-02-03 12:22:47 +01:00