chriseth
b5acc63008
Merge pull request #5427 from ethereum/liblangutil
...
Factor out langutil, a new static library that is shared between libyul/libsolidity
2018-11-22 00:31:01 +01:00
Alex Beregszaszi
7a26ede827
Fix constructor in AuctionRegistrar
2018-11-21 19:21:14 +00: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
7c051f1e32
LLL: implement WITH keyword
2018-11-21 15:50:45 +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
chriseth
8e98885c53
Merge pull request #5355 from ethereum/yul-forloop-pre-rewrite
...
[Yul] Implements a pass to rewrite for-loop's pre block into the parent's Block
2018-11-21 16:10:52 +01:00
mordax
ea8b7d803e
Removing redundant virtual from override function declaration
...
Remove trailing whitespace
Remove changelog change
2018-11-21 14:37:32 +00:00
Leonardo Alt
06c3f0953a
[SMTChecker] Support bound function calls
2018-11-19 15:29:00 +01: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
Leonardo Alt
70bb0eaf95
[SMTChecker] Implement uninterpreted functions and use it for blockhash()
2018-11-15 09:12:42 +01:00
chriseth
727e3f24bc
Do not perform cleanup on unsigned integers when loading from calldata.
2018-11-14 20:52:30 +00:00
chriseth
17e81c6eca
Merge pull request #5410 from ethereum/lll-build
...
Do not build LLL unless requested via the LLL cmake option
2018-11-14 11:11:41 +01:00
Alex Beregszaszi
00cb5dbd43
Move LLL tests into a single directory
2018-11-13 23:51:17 +00:00
Alex Beregszaszi
6961899cb2
Do not build tests for LLL if disabled
2018-11-13 23:51:17 +00:00
chriseth
80fcd1aeb6
Fix commandline tests.
2018-11-14 00:41:34 +01:00
chriseth
28d98d61ef
Use latest solcjs and replace compileStandard by compile.
2018-11-13 13:54:01 +00:00
Alex Beregszaszi
b6c3257752
Remove old libsolc API (compileJSON, compileJSONMulti, compileJSONCallback)
2018-11-13 13:54:01 +00:00
Alex Beregszaszi
90e4d24407
LLL: ensure assembly tests have the correct arguments
2018-11-13 13:47:29 +01:00
Alex Beregszaszi
a4d2e17a04
LLL: add test which has a sub assembly without a forced STOP
2018-11-13 13:47:29 +01:00
Alex Beregszaszi
d2e65a3ac4
LLL bytecode is padded by STOP in tests
2018-11-13 13:47:29 +01:00
Alex Beregszaszi
280255e64d
LLL: do not wrap opcode tests into sequence
2018-11-13 13:47:29 +01:00
chriseth
2e025cf917
Update tests.
2018-11-13 13:33:33 +01:00
chriseth
7e0041cf22
Merge pull request #5406 from ethereum/uninitializedStorageUnimplemented
...
Ignore unimplemented functions for detecting uninitialized storage returns.
2018-11-13 13:22:59 +01:00
Daniel Kirchner
b5e9d849ef
Ignore unimplemented functions for storage returns.
2018-11-13 12:18:22 +01:00
chriseth
9c6048b0b8
Merge pull request #5333 from ethereum/joinPerformance
...
[Yul] Use map join algorithm for performance.
2018-11-13 12:15:11 +01:00
Daniel Kirchner
74557ceb0e
Deterministic YulStringRepository using string hashes.
2018-11-12 23:43:16 +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
af65bac737
Remove trailing whitespace.
2018-11-12 09:15:22 +01:00
Kristofer Peterson
f927da9182
Refactor of bool TypeChecker::visit(FunctionCall const& _functionCall).
...
Visit method now cleanly determines if node represents a function call,
struct construction or type conversion. Type checking, validation and
error message logic is moved to separate methods.
2018-11-09 16:35:54 +00:00
chriseth
9709dfe046
Merge pull request #5128 from ethereum/breakUnbreak
...
[Yul] Test case that shows that break / unbreak are more or less inverse
2018-11-09 16:07:20 +01:00
chriseth
0f2ba3522f
Reset yul string repository.
2018-11-09 15:40:36 +01:00
chriseth
6bbedab383
Merge pull request #5265 from ethereum/cleanupsha3
...
Simplify sha3.
2018-11-09 15:39:57 +01:00
chriseth
5ea514213a
Test case that shows that break/unbreak are more or less inverse.
2018-11-09 15:36:52 +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
bf5b36a1ed
Merge pull request #5366 from ethereum/addVarDecl
...
[Yul] Add VarDeclPropagator to full suite and interactive optimizer.
2018-11-08 12:21:45 +01:00
chriseth
84e8a782d6
Merge pull request #5351 from ethereum/functionTypeConversion
...
Relax type equality requirement of function types during conversion in code generation.
2018-11-08 11:29:55 +01:00
chriseth
cc2de07bc6
Merge pull request #5348 from ethereum/boostRationalNegativeDenominatorFix
...
Fix negative denominator in ``boost::rational`` during exponentiation.
2018-11-08 11:25:30 +01:00
Daniel Kirchner
b16a3644fe
Function type conversion test cases.
2018-11-08 10:51:51 +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
bed0368ffa
Merge pull request #5327 from ethereum/rematerializerSmall
...
Add rematerializer to interactive optimizer.
2018-11-07 20:30:31 +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
Daniel Kirchner
e036133d1b
Fix negative denominator in `boost::rational
` during exponentiation.
2018-11-06 10:52:10 +01:00
Daniel Kirchner
36903d7e27
Remove uses of boost::rational with negative denominator, which breaks with boost 1.68.
2018-11-05 21:36:52 +01:00
Erik Kundt
1d8e9af407
Fixes crash while encoding too large arrays.
2018-10-30 15:14:57 +01:00
chriseth
0e9127a7c8
Add rematerializer to interactive optimizer.
2018-10-28 13:27:21 +01:00
Christian Parpart
f08ab77249
Yul: Implements empty-var-decl-propagation
2018-10-26 13:13:57 +02:00
chriseth
3473326fc4
Merge pull request #5273 from ethereum/interactiveOpt
...
[Yul] Interactive optimizer tool
2018-10-25 13:55:08 +02:00
chriseth
c36a3bd683
Merge pull request #5283 from ethereum/smt_fixed_bytes
...
[SMTChecker] Support FixedBytes
2018-10-25 13:01:01 +02:00
chriseth
f714b0dd7c
Merge pull request #5242 from ethereum/someChecks
...
Some well-formedness checks for the Yul AST.
2018-10-25 12:44:28 +02:00
chriseth
4076875927
Merge pull request #5271 from ethereum/fullSuite
...
[Yul] Full suite tests.
2018-10-25 12:44:10 +02:00
chriseth
d335539891
Merge pull request #5296 from ethereum/setPragmaToArbitrary
...
Set pragma to arbitrary
2018-10-25 12:42:15 +02:00
Leonardo Alt
d8cbf321da
Grouping of symbolic variables in the same file and support to FixedBytes
2018-10-25 09:30:48 +02:00
chriseth
60f1d52f59
Full suite tests.
2018-10-24 18:02:08 +02:00
chriseth
f92623063d
Add redundant assign and ssa.
2018-10-24 17:54:35 +02:00
chriseth
57843f790c
Interactive optimizer tool.
2018-10-24 17:52:28 +02:00
chriseth
1424beda79
Remove pragma changer.
2018-10-24 14:52:55 +02:00
chriseth
9e6356a763
Set pragma to arbitrary.
2018-10-24 14:52:55 +02:00
chriseth
eded236e67
Only run zeppelin as external tests.
2018-10-24 14:52:55 +02:00
chriseth
01566c2e1a
Merge pull request #5272 from ethereum/smt_special_vars
...
[SMTChecker] Support msg.*, tx.*, block.*, gasleft and blockhash
2018-10-24 14:34:17 +02:00
chriseth
a9a414bd0f
Added some tests.
2018-10-24 14:29:33 +02:00
chriseth
b3911798b3
Redundant assign eliminator.
2018-10-24 13:24:25 +02:00
Leonardo Alt
e2cf5f6ed9
Add gasleft constraint and use full member access name
2018-10-22 18:19:11 +02:00
Christian Parpart
f112377dd4
Refactor solidity::Token
into an enum class
with TokenTraits
helper namespace
2018-10-22 17:00:51 +02:00
Leonardo Alt
b46b827c30
[SMTChecker] Support msg.*, tx.*, block.*, gasleft and blockhash
2018-10-19 15:52:16 +02:00
chriseth
c13b5280c1
Merge pull request #5256 from ethereum/lvalueCleanup
...
Lvalue cleanup
2018-10-19 11:20:12 +02:00
chriseth
c676b009e1
Merge pull request #5267 from ethereum/ssatransform
...
SSA transform - first step.
2018-10-19 11:10:08 +02:00
chriseth
5c274a9251
Merge pull request #5260 from ethereum/flattenMore
...
Flatten more.
2018-10-19 11:08:46 +02:00
chriseth
0ebe572f7d
Merge pull request #5258 from ethereum/coverage2
...
Add some simplification tests for operations.
2018-10-19 11:04:56 +02:00
chriseth
4987c12ac3
Merge pull request #5213 from Mordax/issue-5103
...
Tests for flipping signs on signed type edge case
2018-10-18 19:02:35 +02:00
chriseth
7dffb0f3ee
Merge pull request #5270 from ethereum/inlineFlexible
...
Make full inliner more flexible.
2018-10-18 19:02:04 +02:00
chriseth
465845b7a7
SSA transform - first step.
2018-10-18 18:56:22 +02:00
chriseth
b2725aa913
Make full inliner more flexible.
2018-10-18 14:57:09 +02:00
chriseth
48749146da
Fix a bug in CSE where a variable that was already out of scope was used.
2018-10-18 14:55:51 +02:00
chriseth
c34fa43d5b
Test case that shows a CSE bug related to scopes.
2018-10-18 14:54:23 +02:00
chriseth
e78b95d9d4
Renamed SHA3.{h,cpp} files.
2018-10-18 14:31:36 +02:00
chriseth
e8a2d57075
Flatten more.
2018-10-18 00:58:15 +02:00
chriseth
bda154440c
Add some simplification tests for operations.
2018-10-18 00:10:39 +02:00
chriseth
7609e2871e
Merge pull request #5240 from ethereum/limitDispenserSize
...
[Yul] Limit name length created by dispenser
2018-10-17 22:54:38 +02:00
chriseth
56425bb2b1
Add a test for delete x.length
2018-10-17 22:07:05 +02:00
chriseth
c6a6e9ac5d
Merge pull request #5232 from ethereum/inlineHeuristic
...
[Yul] Add simple inlining heuristic
2018-10-17 17:22:46 +02:00
chriseth
732d09cef1
Limit size of generated names and add convenience constructors.
2018-10-17 17:21:55 +02:00
chriseth
16c2a775fd
Handle externally supplied variables correctly in disambiguator.
2018-10-17 14:12:11 +02:00
chriseth
9fb5feed05
Use metrics in the full inliner.
2018-10-17 14:11:20 +02:00
chriseth
2ab6430303
Inline each function separately.
2018-10-16 17:32:21 +02:00
chriseth
a435a14e13
Test for crash via inlining.
2018-10-16 17:29:20 +02:00
chriseth
e2e4a9fe81
New full inliner.
2018-10-16 17:16:03 +02:00
chriseth
ffe44536fe
Add a "full simplify" test that applies multiple elementary transforms.
2018-10-16 16:18:39 +02:00
chriseth
a320eec7d3
New simplifier via broken expressions.
2018-10-16 16:18:39 +02:00
chriseth
b723893ac7
Merge pull request #5225 from mestorlx/issue5007
...
Prevent crash in case there are no contracts
2018-10-16 14:25:58 +02:00
mordax
134f5cb798
Added test for flipping signs on signed type edge case
2018-10-15 16:08:43 -04:00
chriseth
036929aba1
Merge pull request #5226 from ethereum/chriseth-patch-3
...
Correct include path
2018-10-15 19:51:25 +02:00
chriseth
8677d9276a
Merge pull request #5222 from ethereum/yul-block-flattener
...
[WIP] Yul: Introduces a block flattening pass
2018-10-15 19:50:10 +02:00
mestorlx
9f9d6fdcc4
fix issue##5007
2018-10-15 14:26:15 -03:00