Christian Parpart
065c3c87af
libyul: changing some AST members from shared_ptr<> to unique_ptr<>
...
* Some spaces look a little more verbose now, but that shouln't be a problem as it also should raise readability, too.
* This makes some use of return-value-optimizations also.
2019-01-16 14:58:59 +01:00
Daniel Kirchner
81f24f24e6
Add equivalent function combiner as Yul optimizer step.
2019-01-15 17:21:03 +01:00
Daniel Kirchner
4c8f8e9491
Disallow mismatching types in switch cases and detect duplicates by value for number literals.
2019-01-15 16:32:21 +01:00
Daniel Kirchner
5a99623fec
Avoid explicit conversion from Block to Statement in CodeSize visit.
2019-01-11 12:52:24 +01:00
chriseth
d9c6773664
Adjust inlining thresholds.
2019-01-09 16:57:33 +01:00
chriseth
edda79eec5
Variables are free with regards to code size.
2019-01-09 16:57:33 +01:00
chriseth
5b8b016fae
Use the block flattener.
2019-01-08 16:02:14 +01:00
chriseth
f5b24a38b8
Make function grouper idempotent.
2019-01-08 15:05:09 +01:00
chriseth
5b73c2ae3b
Take special functions that require literals into account.
2019-01-07 17:23:38 +01:00
chriseth
9222eff08f
Make the dialect available everywhere.
2019-01-07 16:41:03 +01:00
chriseth
2e9c70add0
Use rematerializer if variable is unreferenced or value is "cheap".
2019-01-07 14:03:32 +01:00
Christian Parpart
62fe57479e
make use of C++ = default
constructor declarations as well as more non-static member initialization syntax.
2018-12-19 11:26:42 +01:00
chriseth
bf7d71d6b3
Merge pull request #5613 from ethereum/yulStringLiterals
...
[Yul] Use C++ user-defined literals for creating YulString constants.
2018-12-17 14:07:24 +01:00
chriseth
bc22a25a60
Remove VarDeclPropagator.
2018-12-13 16:51:10 +01:00
chriseth
6c6a53a439
Do not create unassigned variables.
2018-12-13 16:51:10 +01:00
chriseth
11209ec48a
Add variable declaration initializer.
2018-12-13 16:49:04 +01:00
chriseth
b11d413720
Consider return variables to be zero initially.
2018-12-13 16:02:30 +01:00
chriseth
60a368244a
Do not inline into already big functions.
2018-12-13 12:12:54 +01:00
Daniel Kirchner
5ac7620045
Use C++ user-defined literals for creating YulString constants.
2018-12-12 18:45:43 +01:00
chriseth
9557dd7e74
Support unassigned variables in the SSA value tracker and the data flow analyzer.
2018-12-12 18:06:28 +01:00
Daniel Kirchner
a18985800f
Fix compilation for certain combinations of boost and gcc.
2018-12-12 07:51:23 +01:00
liangdzou
362648a450
Reuse stack slots in Yul to EVM code generation.
2018-12-10 14:28:56 +01:00
Daniel Kirchner
1eb60cbb39
Add structural simplifier as optimization step for Yul.
2018-12-06 18:37:35 +01:00
Mathias Baumann
d0204eef2f
SSAValueTracker should only use nullptr for default values
2018-12-05 18:01:41 +01:00
chriseth
32c9da9419
Merge pull request #5593 from ethereum/issue-5384
...
Fix expression simplifier asserting on default values
2018-12-05 17:58:23 +01:00
Daniel Kirchner
538d707439
Relax dependency of FullInliner on FunctionHoister.
2018-12-05 11:53:31 +01:00
Mathias Baumann
54846ed0a7
Fix expression simplifier asserting on default values
2018-12-05 11:43:02 +01:00
Daniel Kirchner
1b8a013d4a
Properly recurse in ForLoopInitRewriter
2018-12-04 13:36:25 +01:00
Christian Parpart
8dd0338d12
Remove superfluous libyul/ASTDataForward.h and include libyul/AsmDataForward directly instead.
2018-11-23 14:29:05 +01:00
Christian Parpart
ec47c8946b
Isolating libyul library API into its own namespace yul
.
2018-11-23 14:29:00 +01:00
Christian Parpart
713d94476e
Reorder some include files and group <libyul/>'s together (as much as possible)
2018-11-23 12:37:19 +01:00
Christian Parpart
0f4ed52a71
Rewrite header paths to adapt to recent git mv
of libsolidity/inlineasm to libyul
2018-11-23 11:18:57 +01:00
Christian Parpart
d67322a186
Introduce namespace langutil
in liblangutil directory.
...
Also:
- Use {}-style list initialisation for SourceLocation construction
- Introduce new system includes
- Changes the API of the Scanner to take source as value (with move) as opposed to as a reference
2018-11-21 19:13:44 +00:00
Christian Parpart
87821c53c3
Isolating files shared between Yul- and Solidity language frontend.
2018-11-21 18:58:12 +00:00
Alex Beregszaszi
c9ee30294c
Merge pull request #5444 from Mordax/issue-5168-rmvirtual
...
Removing redundant virtual from override function declaration
2018-11-21 15:16:08 +00:00
mordax
ea8b7d803e
Removing redundant virtual from override function declaration
...
Remove trailing whitespace
Remove changelog change
2018-11-21 14:37:32 +00:00
Christian Parpart
f705a45d43
[Yul] Implements a pass to rewrite for-loop's pre block into the parent's Block.
2018-11-16 13:15:41 +01:00
chriseth
b1454433b2
Remove variables that go out of scope from data structure.
2018-11-12 23:00:37 +01:00
chriseth
faa7b61d76
Use map join algorithm for performance.
2018-11-12 23:00:37 +01:00
chriseth
fa44d20721
Remove side-effect-free statements.
2018-11-08 18:14:36 +01:00
chriseth
cd11f7cfac
Merge pull request #5325 from ethereum/fixDataFlow
...
[Yul] Fix data flow analyzer for function definitions.
2018-11-08 12:52:51 +01:00
chriseth
b801e61611
Merge pull request #5365 from ethereum/improveNameDispenser
...
[Yul] Use single counter for name dispenser for performance reasons.
2018-11-08 12:24:21 +01:00
chriseth
37766ee8e4
Add VarDeclPropagator to full suite and interactive optimizer.
2018-11-07 23:19:42 +01:00
chriseth
845899e305
Use single counter for name dispenser for performance reasons.
2018-11-07 23:09:33 +01:00
chriseth
b2b11eaa00
Fix data flow analyzer for function definitions.
2018-11-07 20:32:55 +01:00
chriseth
674e17c2a8
Performance: Replace string by special single-copy YulString class.
2018-11-07 19:30:27 +01:00
Christian Parpart
ab0de38f16
Eliminate byte
-typedef and use uint8_t
in all their places instead.
...
This change is made to (easily) be forward compatible with future C++
standards, in order to allow compiling the code with newer standards at
some point in the future.
* Removed the `using byte = uint8_t;` line from Common.h
* Mechanically change all uses of `byte` to `uint8_t`.
Tested with GCC 7.3 in C++11/14/17 modes :-)
2018-11-07 12:17:57 +01:00
chriseth
acf92930ba
Merge pull request #5247 from ethereum/yul-vardecl-propagation
...
Yul: Implements empty-var-decl-propagation
2018-10-28 20:46:34 +01:00
Christian Parpart
1264290d57
[Yul] ExpressionJoiner: code cleanup
...
* ensure public API is only containing `run(Block&)`, all the rest is private API / implementation details
* adding some comments to class data members to quicker understand their meaning
* eliminate unnecessary `operator()(If&)` as it's not changing default behaviour of `ASTModifier`
* simplify readability of `visit(Expression&)`'s impl, also moving assert's into "isLatestStatementVarDeclOf", as this one is already ensuring exactly that.
* ctor impl's use of ReferenceCounter use shortened.
* renamed and improved `isLatestStatementVarDeclOf` to better match its meaning (especially since it's only used once)
2018-10-26 13:53:37 +02:00
Christian Parpart
f08ab77249
Yul: Implements empty-var-decl-propagation
2018-10-26 13:13:57 +02:00