chriseth
d305c219d8
Fix namespace styles.
2021-05-27 17:41:04 +02:00
hrkrshnn
39b23420ec
Extracted the class SMT Solver from ReasoningBasedSimplifier
2021-05-06 11:26:26 +02:00
franzihei
13eec106f4
DOCS: update optimizer docs, harmonize spelling and add Yul-based optimizer module
2021-05-04 17:37:02 +02:00
Djordje Mijovic
e404b6e7a6
Refactoring yul source locations.
2021-05-04 16:05:23 +02:00
chriseth
e2d8005737
Add verbatim builtin.
2021-04-26 19:56:44 +02:00
chriseth
d9df3d50e2
Merge pull request #11311 from anurag-git/issue_10738-3
...
Use range-v3 loops(remove_erase, remove_erase_if)
2021-04-26 14:18:15 +02:00
Harikrishnan Mulackal
2cb525f607
Merge pull request #11306 from ethereum/toevminstruction
...
Add toEVMInstruction helper
2021-04-26 08:41:25 +02:00
anurag4u80
c4cf412fed
Replaced boost remove_erase and remove_erase_if
2021-04-24 08:10:41 +05:30
Alex Beregszaszi
d508544340
Add toEVMInstruction helper
...
Co-authored-by: Harikrishnan Mulackal <webmail.hari@gmail.com>
2021-04-23 22:56:50 +01:00
Alex Beregszaszi
e39433198d
Remove the usage of boost::noncopyable
...
Prior to this half of the codebase used explicit deleted copy constructors, the others used boost::noncopyable.
2021-04-23 14:57:01 +01:00
Harikrishnan Mulackal
f162c484ca
Merge pull request #11026 from ethereum/resolve-keccak
...
Evaluate ``keccak256(a, const)``, when the value at memory location ``a`` is known at compile time and ``const <= 32``
2021-04-22 19:18:19 +02:00
hrkrshnn
b599235b8d
Skip resolving Keccak if AST contains msize.
...
Also a refactoring changing `m_optimizeMLoad` to `m_containsMSize`.
2021-04-22 18:19:47 +02:00
hrkrshnn
3bc4f5708a
Evaluate keccak(a, const)
if value at memory location a
is known
...
Here the value of constant can be at most 32.
2021-04-22 18:19:47 +02:00
hrkrshnn
1f5b874eaf
Optimizer context has parameter expectedExecutionsPerDeployment
2021-04-22 17:27:57 +02:00
chriseth
a6a3af58a0
Add test.
2021-04-22 17:23:56 +02:00
chriseth
00fb2d390b
Do not replace zeros by return variable.
2021-04-22 16:54:02 +02:00
chriseth
35b651103d
Adjust cost of literal zero.
2021-04-22 11:42:42 +02:00
Daniel Kirchner
afae46dcb5
Add ScopedSaveAndRestore helper.
2021-04-16 10:56:56 +02:00
anurag4u80
bbcdddeed9
Replaced keys, values and reverse with ranges
2021-03-31 23:33:04 +05:30
hrkrshnn
0100f48e05
FunctionSpecializer: skip specializing recursive functions
...
This avoids potential pathological behaviour, like in Ackermann function.
2021-03-29 11:02:31 +02:00
hrkrshnn
45a3747701
Added FunctionSpecializer to the optimization suite
2021-03-29 11:02:18 +02:00
hrkrshnn
22ebdc7438
Implemented FunctionSpecializer
...
Optimiser step that specializes the function with its literal arguments.
2021-03-29 11:02:18 +02:00
hrkrshnn
8564d08228
Added a helper class FunctionCopier in ASTCopier
...
Helper class that creates a copy of the function definition, replacing the names of the variable
declaration with a new name.
2021-03-29 11:02:18 +02:00
hrkrshnn
b42fc2015c
NameCollecter can now only collect VariableDeclarations
...
This is done to help with the optimizer step FunctionSpecializer
2021-03-25 11:49:16 +01:00
chriseth
fc0e571a07
Refined cleanup.
2021-02-16 14:20:27 +01:00
Daniel Kirchner
f34d7120a2
Add and use mapTuple helper.
2021-01-13 17:23:27 +01:00
Daniel Kirchner
91cdb606a5
Some style review suggestions.
2021-01-13 12:43:38 +01:00
Daniel Kirchner
4505889481
Replace ranges::all_of wrapper by range-v3.
2021-01-12 21:44:42 +01:00
Daniel Kirchner
75bed10be5
Check for scopes in LoadResolver.
2021-01-12 21:41:51 +01:00
Daniel Kirchner
eb035147d2
Rephrase erasure condition in DataFlowAnalyzer.
2021-01-12 21:40:52 +01:00
Daniel Kirchner
3ed55613ba
Add and use cxx20::ranges::all_of.
2021-01-12 21:40:52 +01:00
Daniel Kirchner
970e8064bb
Clear variables, but not backreferences in popScope.
2021-01-12 21:40:52 +01:00
Daniel Kirchner
7fe03cbab0
Implement cxx20 polyfill and replace InvertibleMap entirely.
2021-01-12 21:40:40 +01:00
Daniel Kirchner
625d402dbb
Various optimizations for the DataFlowAnalyzer.
2021-01-12 21:39:20 +01:00
Leonardo Alt
ced79497f5
Fix BFS
2021-01-06 10:17:17 +01:00
Alex Beregszaszi
0425936c8a
Rename AsmScope* to Scope*
2020-12-18 11:55:17 +00:00
chriseth
561280a5cc
Merge remote-tracking branch 'origin/develop' into breaking
2020-12-14 11:33:40 +01:00
Alex Beregszaszi
bd641a5206
Enable more C++ compiler warnings
2020-12-10 21:03:58 +00:00
Alex Beregszaszi
7df986539f
Disallow using reserved identifiers in NameDispenser/VarNameCleaner
2020-12-10 17:10:38 +01:00
hrkrshnn
06d719e4f1
Move filter to CommonData.h
2020-12-09 11:13:27 +01:00
hrkrshnn
7ea96c5583
Move the implementation of createLinkingFunction into a cpp file
2020-12-09 11:13:27 +01:00
Daniel Kirchner
6c70208d5f
Merge pull request #10359 from ethereum/extra-semi
...
Enable the -Wextra-semi warning
2020-12-07 14:35:30 +01:00
chriseth
5e61f2a8cb
Merge pull request #10491 from ethereum/loadStoreDialectFunctions
...
Add storage load/store functions to Yul dialect.
2020-12-07 12:19:20 +01:00
Alex Beregszaszi
1e2bfbd6b2
Enable the -Wextra-semi warning
2020-12-04 17:21:19 +01:00
Daniel Kirchner
96a50b52e2
Add storage load/store functions to Yul dialect.
2020-12-03 19:10:05 +01:00
chriseth
27e44b85e3
Merge pull request #10419 from ethereum/bug-namesimplifier
...
Fix a bug in NameSimplifier.
2020-12-03 17:52:40 +01:00
hrkrshnn
3efac3eef0
NameSimplifier is removed from steps available to users.
2020-12-02 13:48:01 +01:00
hrkrshnn
5a15a4a6bd
Fix a bug in NameSimplifier.
...
A new name created by NameSimplifier could also be created by NameDispenser, since the knowledge of
the new name was not stored in NameSimplifier.
2020-12-02 13:48:01 +01:00
chriseth
8279d90ba2
Merge pull request #10403 from ethereum/rename-asmdata
...
Rename AsmData* to AST*
2020-12-01 14:33:11 +01:00
hrkrshnn
cf6fe5a777
NameDispenser: Added three public functions.
...
The private function `illegalName` was converted into a public function.
A new public getter function `usedNames()` returns a reference to `m_usedNames`.
A public function reset that would change all `m_usedNames` to *only* the names that are used in the
AST. Also resets the counter. This will be used before the final NameSimplifier step in the
optimization phase.
The first two functions were added so that `NameSimplifier` could use it instead of traversing the AST
using `NameCollector` to find used names.
2020-11-30 14:02:57 +01:00