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
011f8d3ff7
Changed the type of gas calculation to bigint instead of size_t
...
Since the gas calculation can involve multiplication by ``--optimize-runs``, it is possible that
`size_t` is not enough to represent the total gas.
2021-04-22 18:19:47 +02:00
hrkrshnn
94f9410abe
Added hashFunction to Dialect. For EVMDialect, it is keccak256
...
In a later PR, the functions `storageLoadFunction`, `storageStoreFunctions`, etc will be refactored
to return a YulString instead of a pointer to a BuiltinFunction.
2021-04-22 17:27:57 +02:00
hrkrshnn
dd6300a53e
GasMeter can now account for gas of Keccak-256
2021-04-22 17:27:57 +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
f9b23ca845
Merge pull request #11247 from ethereum/setValueForCurrentScopeHelper
...
Add SetValueForCurrentScope helper.
2021-04-16 12:42:25 +02:00
Daniel Kirchner
afae46dcb5
Add ScopedSaveAndRestore helper.
2021-04-16 10:56:56 +02:00
Daniel Kirchner
5bebbca273
Extract VariableReferenceCounter and StackTooDeep error from EVMCodeTransform.
2021-04-13 10:41:16 +02:00
chriseth
2856f56525
Merge pull request #10942 from ethereum/returnSlotAllocation
...
Delayed return slot allocation.
2021-04-08 16:42:07 +02:00
chriseth
f04adde664
Allow hex string literals in Yul.
2021-04-08 15:03:33 +02:00
anurag4u80
b2ca7916aa
Replaced boost::adaptors::transformed
2021-04-08 17:38:14 +05:30
Daniel Kirchner
35c2eeab68
Restrict to only popping, but not reusing argument slots, as well as only freeing up until the return slots are allocated.
2021-04-06 13:38:06 +02:00
Daniel Kirchner
4b0f8383a6
Reuse function argument slots and defer allocation of return variable slots in EVMCodeTransform.
2021-04-06 13:38:05 +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
hrkrshnn
6d9e9e1b1e
Fix small bug in GasMeter calculation in creation context
...
Old calculation did not ignore `optimize-runs` parameter, when creation code gas computations were
done. This would lead to expanding values such as `shl(180, 1)` inside constructor code, even for
the default value for `--optimize-runs`, i.e., 200.
2021-03-17 12:33:10 +01:00
Daniel Kirchner
a75424eec4
Drop support for evm15 and eip-615.
2021-03-09 15:56:03 +01:00
chriseth
7d0ecd9406
Merge pull request #10535 from ethereum/removeNumbers
...
Improve generated names.
2021-02-23 13:29:18 +01:00
chriseth
9c7b1e9c3f
Detect assignment to function in inline assembly.
2021-02-23 11:47:12 +01:00
chriseth
fc0e571a07
Refined cleanup.
2021-02-16 14:20:27 +01:00
Alex Beregszaszi
ded5d721d2
Turn unreachable error into assertion
2021-02-16 10:59:22 +00:00
Christian Parpart
32ba5f5ae7
libsolidity: Extend the AST for named AST nodes in order to get precise locations for names.
...
The actual SourceLocation on an ASTNode is representing the whole
ASTNode whereas in an LSP (for example) you are also interested in the
SourceLocation of a name of a construct (e.g. variable decarlation, function definition, ...).
This also properly encodes non-existend sources as `-1` in the JSON output (eliminating the use of `numeric_limits<size_t>::max()`).
2021-02-10 18:13:09 +01:00
chriseth
9b20c9840a
Merge pull request #10885 from ethereum/heuristic-revamp
...
Yul Backend: Get rid of heuristics for finding the matching runtime
2021-02-10 00:49:56 +01:00
hrkrshnn
5a21e33743
Improve error reporting for Yul parser errors
...
This makes debugging Sol2Yul codegen bugs slightly easier.
2021-02-09 15:40:25 +01:00
Mathias Baumann
e4f1257c83
Yul Backend: Get rid of heuristics for finding the matching runtime
2021-02-09 14:50:25 +01:00
Alexander Arlt
87e3fbee6c
[ewasm] Polyfill: balance & address.
2021-01-19 13:03:40 -05:00
Alexander Arlt
321e971eb3
[ewasm] Add support for hera debugging module.
2021-01-18 20:06:12 -05: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
Alex Beregszaszi
9230faf9a3
Simplify StackTooDeepError in Yul
2020-12-16 20:35:11 +00:00
chriseth
8f833f4e8f
Merge pull request #10618 from ethereum/develop
...
Merge develop into breaking.
2020-12-16 12:34:41 +01:00
chriseth
5c40fb060c
Report illegal tokens in the Yul parser.
2020-12-16 12:20:07 +01:00
chriseth
6c7e6a3c9f
Merge pull request #10615 from ethereum/develop
...
Merge develop into breaking.
2020-12-15 18:34:01 +01:00
Bhargava Shastry
9b38176c77
AsmAnalysis: Fix out of bounds read due to incorrect bounds checking on literal arguments
2020-12-15 15:38:59 +01: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
2b09fa14e1
Disallow using reserved identifiers in Yul
2020-12-10 17:10:38 +01:00
Alex Beregszaszi
7df986539f
Disallow using reserved identifiers in NameDispenser/VarNameCleaner
2020-12-10 17:10:38 +01:00
Alex Beregszaszi
3a687c34e4
Add reservedIdentifier to dialect
2020-12-10 17:10:38 +01:00
chriseth
482bda6887
Merge remote-tracking branch 'origin/develop' into breaking
2020-12-10 12:15:52 +01:00
chriseth
d75821e068
Merge pull request #10536 from ethereum/fix-createlinkingfunction-to-cpp
...
Move the implementation of createLinkingFunction into a cpp file
2020-12-09 17:49:16 +01:00
chriseth
b18c76e34b
Merge remote-tracking branch 'origin/develop' into breaking
2020-12-09 15:24:49 +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
Alexander Arlt
90623d9507
Fix recompilation of polyfills.
2020-12-08 20:02:25 -05:00
chriseth
806453aca9
Merge remote-tracking branch 'origin/develop' into breaking
2020-12-08 21:00:09 +01:00
Alex Beregszaszi
7e88ba8da0
Enable the -Wconversion warning
2020-12-08 16:45:24 +00:00
chriseth
a3c5d37d02
Merge remote-tracking branch 'origin/develop' into breaking
2020-12-07 17:13:48 +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
329b8f2a60
Merge remote-tracking branch 'origin/develop' into breaking
2020-12-07 13:04:14 +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
d56a7bb89e
Merge pull request #10489 from ethereum/develop
...
Merge develop into breaking.
2020-12-03 18:11:12 +01:00
chriseth
e04cc80438
Merge pull request #9555 from ethereum/yul-parser-refactor
...
Yul parser refactor
2020-12-03 18:07:31 +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
chriseth
5071709b25
Remove FunctionCall from ElementaryOperation.
2020-12-03 17:47:47 +01:00
Alex Beregszaszi
61ed1f1986
cleanup
2020-12-03 17:15:45 +01:00
Alex Beregszaszi
6c0a3bd043
Ensure that builtins must be executed
2020-12-03 17:15:44 +01:00
Alex Beregszaszi
e2a756a705
Remove dead code
2020-12-03 17:15:44 +01:00
Alex Beregszaszi
baa7251f1d
More clean up
2020-12-03 17:14:49 +01:00
Alex Beregszaszi
75e0057388
Rename parseElementaryOperation to parseLiteralOrIdentifier
2020-12-03 17:14:49 +01:00
Alex Beregszaszi
3da2b67b67
simplify parser
2020-12-03 17:14:49 +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
9a5902f9d7
Merge remote-tracking branch 'origin/develop' into breaking
2020-12-02 12:28:02 +01:00
chriseth
e10712c173
Merge pull request #10454 from ethereum/ewasm-cleanup
...
[ewasm] Clean up some builtins and fix text representation of `select`
2020-12-01 17:34:48 +01:00
chriseth
8279d90ba2
Merge pull request #10403 from ethereum/rename-asmdata
...
Rename AsmData* to AST*
2020-12-01 14:33:11 +01:00
Alex Beregszaszi
04cf4867fe
[ewasm] Clean up opcodes/builtins in the binary encoder
...
Also make sure that `i32.drop/i64.drop` won't silently drop its arguments, as they may have side-effects.
2020-12-01 12:50:54 +00:00
Alex Beregszaszi
a29a7ad680
[ewasm] Properly encode i32/i64.select in the text format
2020-12-01 11:22:38 +00:00
chriseth
6de7eaba95
Merge remote-tracking branch 'origin/develop' into breaking
2020-12-01 10:50:13 +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
Alex Beregszaszi
a7ee1355bd
[ewasm] Use select instruction where appropriate
2020-11-30 12:10:32 +00:00
Alex Beregszaszi
9640cfd77e
[ewasm] Add i32.select/i64.select
2020-11-30 11:58:33 +00:00
chriseth
a5a560e163
Merge pull request #10417 from ethereum/onlyClearForAssignment
...
DataFlowAnalyzer: Only clear known values for assignment.
2020-11-30 12:02:28 +01:00
chriseth
75b1624180
Merge pull request #10404 from ethereum/ewasm-eq-simplify
...
[ewasm] Change eq() in polyfill to branch-less version
2020-11-30 11:54:45 +01:00
chriseth
45307a24d6
Merge pull request #10416 from ethereum/speedUpByMovingAssertion
...
Superspeed.
2020-11-30 11:35:20 +01:00
Alex Beregszaszi
06af2fb38a
[ewasm] Change eq() in polyfill to branch-less version
2020-11-27 22:47:55 +00:00
chriseth
21c35924df
Only clear for assignment.
2020-11-26 18:32:13 +01:00
chriseth
111eaa1e9b
Superspeed.
2020-11-26 17:38:01 +01:00
chriseth
ac9b31d623
Abort early if the optimizer sequence is empty.
2020-11-26 16:41:20 +01:00
Alex Beregszaszi
a22077f736
Rename AsmData -> AST
...
Also attempt to only include ASTForward where appropriate.
2020-11-25 17:58:02 +00:00
chriseth
a0a02f2307
Merge remote-tracking branch 'origin/develop' into breaking
2020-11-23 19:28:08 +01:00
Alex Beregszaszi
f76ac0a753
[wasm] Document what StringLiteral is
2020-11-20 21:16:56 +00:00
Alexander Arlt
9d6296eca4
[ewasm] Polyfill: calldataload & calldatacopy.
2020-11-20 13:46:04 -05:00
chriseth
a7db4fa4a5
Merge remote-tracking branch 'origin/develop' into breaking
2020-11-18 20:05:02 +01:00
Alexander Arlt
c0d28492c3
[ewasm] Polyfill: Rename endian_swap -> bswap.
2020-11-17 21:30:06 -05:00
Alexander Arlt
19f764bf65
Split ewasm polyfill functions into different files.
2020-11-17 19:27:44 -05:00
chriseth
0a31a6bc36
Merge pull request #10258 from ethereum/develop
...
Merge develop into breaking.
2020-11-11 13:36:17 +01:00
Alex Beregszaszi
6f6bcdd526
[ewasm] Display custom sections as hex string in the text output
2020-11-10 23:48:24 +01:00
chriseth
da92fe548e
Merge remote-tracking branch 'origin/develop' into breaking
2020-11-10 13:48:32 +01:00
Alex Beregszaszi
6e11754c8b
[ewasm] Support compiling data subobjects
2020-11-09 17:47:12 +00:00
Alex Beregszaszi
e41700e5f7
[ewasm] Clarify custom section handling in BinaryTransform
2020-11-09 17:47:01 +00:00
Alex Beregszaszi
cd08dab4e6
[ewasm] Allow compiling Yul without "main"
2020-11-09 16:36:29 +00:00
chriseth
ce50f05fc1
Merge remote-tracking branch 'origin/develop' into HEAD
2020-10-29 16:44:47 +01:00
Alex Beregszaszi
1e7dcb0bbf
Use yulAssert instead of astAssert
2020-10-29 14:21:12 +00:00
Alex Beregszaszi
e4133815e9
Remove explicit yul:: namespacing in AsmJsonImporter
2020-10-29 14:07:43 +00:00
Alex Beregszaszi
1ab6340828
Move AsmJsonImporter from libsolidity to libyul
...
It is next to AsmJsonConverter now and interdependencies are shrunk.
2020-10-29 14:06:34 +00:00
chriseth
e93a84ccd4
Merge remote-tracking branch 'origin/develop' into HEAD
2020-10-28 18:19:31 +01:00
chriseth
b18d5ab257
Fix move bug.
2020-10-28 17:21:08 +01:00
chriseth
fb40f29594
Merge pull request #10133 from ethereum/asm-error-codes
...
Split error codes for EVM opcodes
2020-10-28 13:00:23 +01:00
Alex Beregszaszi
24d8c2ed90
Split error codes for EVM opcodes
2020-10-28 11:45:46 +00:00
Alex Beregszaszi
13652bd4a9
[ewasm] Add assertion for datasize/dataoffset in BinaryTransform
2020-10-27 17:43:31 +00:00
Alex Beregszaszi
6d79a8885f
[ewasm] Implement stop() in EVM->Ewasm translator
2020-10-27 17:09:30 +00:00
chriseth
bfd267459c
Panic codes.
2020-10-22 19:25:55 +02:00
Daniel Kirchner
0dca223b45
Add another argument to setimmutable and the AssignImmutable opcode, allowing to modify code at any memory offset.
2020-10-15 18:14:41 +02:00
Daniel Kirchner
61a03036fe
Refactor stack to memory mover in preparation of moving function arguments.
2020-10-13 12:20:04 +02:00
chriseth
d513e05ce9
Merge pull request #9961 from ethereum/stackLimitEvaderRefactor2
...
StackToMemoryMover: encapsulate memory offset tracking into its own class.
2020-10-08 19:56:44 +02:00
chriseth
70ebc0a13c
Merge pull request #9960 from ethereum/stackLimitEvaderRefactor
...
StackLimitEvader: Track unreachable variables globally instead of per function.
2020-10-08 19:01:26 +02:00
Daniel Kirchner
5442a7ade2
Always run the FunctionHoister as part of the optimizer Suite.
2020-10-06 22:30:37 +02:00
Daniel Kirchner
c8a7098f2f
StackToMemoryMover: encapsulate memory offset tracking into its own class.
2020-10-06 11:10:43 +02:00
Daniel Kirchner
0b87849bcb
Track unreachable variables globally instead of per function.
2020-10-06 10:38:26 +02:00
Alexander Arlt
b6e1415509
Add LEB128 encoding functions & tests.
2020-09-28 16:06:19 -05:00
Daniel Kirchner
f3c2d6cfdc
Move memory load and store functions to the dialect.
2020-09-17 22:13:27 +02:00
Daniel Kirchner
48f620fb50
Reverse the order of the memory offsets assigned to variables.
2020-09-17 22:13:27 +02:00
Daniel Kirchner
976abf4715
Easy review fixes.
2020-09-17 22:13:27 +02:00
Daniel Kirchner
f4b42d1c72
Add stack limit evader.
2020-09-17 22:13:27 +02:00
chriseth
6e2d2feb10
Small fixes wrt ReasoningBasedSimplifier.
2020-09-16 18:08:54 +02:00
chriseth
bfd3ab23e2
Disallow optimizer steps that require SMT if none is available.
2020-09-15 15:57:59 +02:00
chriseth
9bcc2f1713
Make ReasoningBasedSimplifier available as step.
2020-09-15 15:57:59 +02:00
chriseth
f73fb726af
Reasoning based optimizer.
2020-09-15 15:57:58 +02:00
chriseth
552a5f0913
Merge pull request #9314 from ethereum/inlineStartingFromLeaves
...
Handle "leaf functions" first in full inliner.
2020-09-14 20:22:48 +02:00
chriseth
8e39110a30
Remove flag.
2020-09-14 17:35:04 +02:00
chriseth
42c26e0bf5
Inline tiny functions first.
2020-09-10 17:01:20 +02:00
chriseth
f102feaf09
Handle "leaf functions" first in full inliner.
2020-09-10 17:01:19 +02:00
chriseth
6101bdf7e2
Name simplifier.
2020-09-10 16:23:29 +02:00
Harikrishnan Mulackal
d166c2540a
Fix typo block
2020-09-07 17:24:03 +02:00
Harikrishnan Mulackal
e2fd41f097
Implemented UnusedFunctionArgumentPruner
2020-09-03 13:15:38 +02:00
Alex Beregszaszi
2426616859
Disallow language keywords to be used as identifiers by NameDispenser and VarNameCleaner
...
Also introduce isRestrictedIdentifier helper in OptimizerUtilities
2020-08-31 12:52:17 +01:00
Alex Beregszaszi
7ef9591e64
Expose hex literal to the Yul parser
...
This allows nicer error messages.
2020-08-28 19:34:52 +01:00
Alex Beregszaszi
4366ede889
Introduce Leave as a keyword for Yul
2020-08-28 19:34:52 +01:00
Alex Beregszaszi
caa329066e
Do not emit Solidity-only tokens in the Scanner for Yul
...
And simplfiy AsmParser greatly.
2020-08-28 19:34:52 +01:00
Alex Beregszaszi
64c73baee9
Use only advance() and not with a mix of m_scanner->next()
2020-08-28 19:34:52 +01:00
Alex Beregszaszi
dd44fc1f06
Use explicit yul namespace in WasmCodeTransform
2020-08-27 19:49:30 +01:00
Alex Beregszaszi
fdf68a9525
Add some asserts to WasmCodeTransform
2020-08-27 19:49:30 +01:00
Alex Beregszaszi
4e5b403c37
Introduce RightArrow (->) token in the scanner
2020-08-27 12:28:27 +01:00
chriseth
e72afcba47
Fix inlining order to correspond to source order.
2020-08-26 10:20:18 +02:00
Harikrishnan Mulackal
5c6e7f03b4
Extended LoopInvariantCodeMotion for storage and state
2020-08-19 12:41:29 +02:00
Harikrishnan Mulackal
3cbe65e4f3
Refactor SideEffects struct
2020-08-18 14:53:59 +02:00
Alex Beregszaszi
3a617f9cf2
Validate expected literal kind for yul::Dialect builtins
...
Co-authored-by: Daniel Kirchner <daniel@ekpyron.org>
2020-08-05 11:37:04 +01:00
Alex Beregszaszi
f6a57af809
Add LiteralKind to Dialect.literalArguments
...
Co-authored-by: Daniel Kirchner <daniel@ekpyron.org>
2020-08-05 11:37:00 +01:00
Alex Beregszaszi
24bb6252ac
Merge Parser::instructions() into EVMDialect
2020-07-29 13:15:54 +01:00
Alex Beregszaszi
d41fc31046
Do not use Parser::instructions() but depend on the dialect in NameDispenser and VarNameCleaner
2020-07-29 13:15:54 +01:00
Alex Beregszaszi
d9cb8c8c5e
Add ScannerKind and replace supportPeriodInIdentifier
2020-07-28 12:31:08 +01:00
Alex Beregszaszi
291c00c3de
Remove errenous error duplication and move some tests around
2020-07-28 10:45:27 +01:00
chriseth
b1f79072df
Fix stack compressor wrt literal arguments.
2020-07-23 14:03:51 +02:00
chriseth
6bb6783d39
Merge remote-tracking branch 'origin/develop' into breaking
2020-07-22 15:26:44 +02:00
Djordje Mijovic
6f97e6153c
[yul] Adding support for accessing subobjects via .
...
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
2020-07-21 17:56:11 +02:00
Djordje Mijovic
952101996c
Removing expectDeposit() from AsmAnalysis as unused function
2020-07-21 12:55:05 +02:00
chriseth
9be5ed1220
Merge remote-tracking branch 'origin/develop' into breaking
2020-07-21 11:35:28 +02:00
chriseth
1c9179683e
Merge pull request #9433 from ethereum/reportAllStackErrors
...
Report all stack errors
2020-07-20 15:44:51 +02:00
chriseth
f5d8636d28
Document variableHeightDiff.
2020-07-20 15:44:29 +02:00
Sachin Grover
b7adb2aa42
Add SPDX license identifier if not present already in source file
...
Fixes : #9220
2020-07-17 20:24:12 +05:30
Daniel Kirchner
92cd1ddb7d
Add markAsInvalid to the various assemblies.
2020-07-16 17:38:13 +02:00
Daniel Kirchner
579e4b5a69
Report all stack errors in the EVM code transform.
2020-07-16 17:38:04 +02:00
chriseth
f945163909
Merge pull request #9432 from ethereum/develop
...
Merge develop into breaking.
2020-07-16 17:14:45 +02:00
Daniel Kirchner
99d831d7d1
Extract recursive function detection from Semantics into the CallGraph.
2020-07-15 20:30:52 +02:00
Alex Beregszaszi
870ea98c21
Prefix EIP-615 opcodes with EIP615 in Instructions
2020-07-13 17:34:19 +01:00
Daniel Kirchner
def0ebbb3e
Free variables directly after visiting RHS of Variable Declarations during EVMCodeTransform.
2020-07-13 17:36:15 +02:00
chriseth
8eee3ed3a2
Merge pull request #9388 from ethereum/develop
...
Merge develop into breaking.
2020-07-13 14:55:21 +02:00
Alex Beregszaszi
87557896ed
Add ctz and popcnt to WasmDialect
2020-07-13 11:10:14 +01:00
chriseth
c90d3a3558
Merge pull request #9384 from ethereum/yul-err-typo
...
Fix missing quote in error message for invalid Yul types
2020-07-13 11:28:55 +02:00
Alex Beregszaszi
20dd66f398
Fix missing quote in error message for invalid Yul types
2020-07-10 21:06:09 +01:00
Djordje Mijovic
547590b972
Fixing additional signedness errors after adding -Wsign-conversion flag
...
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
2020-07-09 17:22:45 +02:00
chriseth
64b6524bdb
Merge remote-tracking branch 'origin/develop' into breaking
2020-07-08 09:37:14 +02:00
Alex Beregszaszi
fc8947d3e8
Restrict dots in Yul identifiers
2020-07-07 13:13:58 +01:00
chriseth
ec8be81258
Merge pull request #9243 from ethereum/jumpTypesForYul
...
Jump types for yul functions.
2020-07-07 12:21:14 +02:00
chriseth
d72aae20aa
Merge pull request #9321 from ethereum/multiYulAssign
...
Disallow the same yul variable occurring multiple times on the LHS of an assignment.
2020-07-07 11:07:05 +02:00
Daniel Kirchner
70615a73a4
Disallow the same yul variable occurring multiple times on the LHS of an assignment.
2020-07-07 10:52:47 +02:00
chriseth
982a269b2b
Merge pull request #9325 from ethereum/develop
...
Merge develop into breaking.
2020-07-06 19:11:02 +02:00
chriseth
4d2b9cd38f
Jump types for yul functions.
2020-07-06 18:12:54 +02:00
Alex Beregszaszi
65c50b14c8
Remove unused instructionNames() function in AsmParser
2020-07-06 16:48:28 +01:00
Alex Beregszaszi
60d4b1e8cc
Rename drop to i64.drop in WasmDialect
...
Also properly implement support for both i32.drop and i64.drop in BinaryTransform, TextTransform, and YulInterpreter
2020-07-06 15:47:17 +01:00
Alex Beregszaszi
67ebb206ea
Turn Instruction::JUMP* into yulAssert
2020-07-06 14:46:36 +01:00
Alex Beregszaszi
55e41b602a
Explicitly check for jump instructions in EVMDialect
2020-07-06 14:46:24 +01:00
chriseth
ab68406006
Merge remote-tracking branch 'origin/develop' into breaking
2020-07-06 15:25:25 +02:00
Daniel Kirchner
b9b24daa8a
Merge pull request #9295 from ethereum/requireFLIR
...
Require for loop init rewriter for SSA.
2020-07-04 17:51:57 +02:00
chriseth
711ed588d7
Require for loop init rewriter for SSA.
...
Co-authored-by: Harikrishnan Mulackal <webmail.hari@gmail.com>
2020-07-03 19:24:31 +02:00
Daniel Kirchner
8c5fce5b31
Merge pull request #9304 from ethereum/yul-assert
...
Only use yulAssert and not solAssert in libyul
2020-07-03 19:00:14 +02:00
Alex Beregszaszi
889131321a
Merge pull request #9298 from ethereum/yul-evm-version-tests
...
Use different error code for various EVM features in Yul
2020-07-03 17:05:01 +01:00
Alex Beregszaszi
4c7c7c0270
Only use yulAssert and not solAssert in libyul
2020-07-03 15:46:50 +01:00
Alex Beregszaszi
2e6cbd8718
Rename warnOnInstructions to validateInstructions
2020-07-03 12:35:22 +01:00
Alex Beregszaszi
d211a45aa4
Use different error code for various EVM features in Yul
2020-07-03 12:35:22 +01:00
Kamil Śliwak
356b9a7904
Restrict linkersymbol
builtin to object dialect of Yul
2020-07-02 14:41:40 +02:00
chriseth
3d602b3190
Merge pull request #9271 from ethereum/sloadKnowledge
...
[Yul Optimizer] Make DataFlowAnalyzer aware of storage / memory slot after sload / mload
2020-07-01 13:46:10 +02:00
chriseth
e0b1d8b9bd
Make DataFlowAnalyzer aware of storage / memory slot after sload / mload.
2020-07-01 13:45:25 +02:00
Bhargava Shastry
1a0391bceb
Fuzzer: Add a specialized StackTooDeepError Exception that is caught in the fuzzing harness
2020-07-01 11:08:20 +02:00
chriseth
3e3f9a472f
Merge remote-tracking branch 'origin/develop' into breaking
2020-06-30 18:56:51 +02:00
Kamil Śliwak
a331d4449d
Add linkersymbol() builtin to Yul EVM dialect
2020-06-24 15:06:52 +02:00
Kamil Śliwak
1b09b4f950
Allow Yul literals longer than 32-bytes when used as literal arguments for builtins
2020-06-24 15:05:38 +02:00
chriseth
af0cd4ab98
Merge pull request #9252 from ethereum/develop
...
Merge develop into breaking.
2020-06-23 18:28:24 +02:00
Alexander Arlt
86be0fbc2f
[ewasm] Fix infinite loops.
2020-06-23 12:35:03 +02:00
chriseth
1441b97131
Merge remote-tracking branch 'origin/develop' into breaking
2020-06-22 18:40:20 +02:00
chriseth
b00014c51d
Fix source location of yul multi-assignemnt.
2020-06-18 14:31:53 +02:00
chriseth
71cb7551f4
Merge pull request #9208 from ethereum/develop
...
Merge develop into breaking.
2020-06-16 16:11:41 +02:00
Kamil Śliwak
06e1b38d1d
WasmCodeTransform: Convert Yul 'if's with i32 argument directly to wasm 'if' without an extra comparison with zero
2020-06-16 15:36:47 +02:00
Kamil Śliwak
d9ca02b47a
Enable translation of i32 Yul variables/literals to i32 wasm variables/literals
...
- Until now they were being translated to i64
2020-06-16 15:36:47 +02:00
chriseth
50e8d6850f
Remove wasm type conversions.
2020-06-16 15:36:42 +02:00
chriseth
5fdbb5c3e3
Simplify inline assembly resolver.
2020-06-15 18:10:18 +02:00
chriseth
8155ad2187
Merge remote-tracking branch 'origin/develop' into breaking
2020-06-15 17:11:41 +02:00
Djordje Mijovic
33e7b24df0
Adding fixes for signedness conversion warnings in libyul
...
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
2020-06-12 10:39:30 +02:00
Kamil Śliwak
e67f5072df
Add support for generating code with i32 variables in text and binary wasm
2020-06-11 02:44:23 +02:00
Kamil Śliwak
6a82d32ef6
Add the ability to store variable types in wasm AST
2020-06-11 02:44:23 +02:00
Kamil Śliwak
840ff40263
Define wasm::Type enum and use it for import parameters and result
2020-06-11 02:44:23 +02:00
chriseth
a1165c135d
Fix error codes.
2020-06-10 18:27:37 +02:00
chriseth
6b3171c38b
Merge remote-tracking branch 'origin/develop' into breaking
2020-06-10 11:30:50 +02:00
chriseth
d2e9b4e946
Merge pull request #9151 from ethereum/wasm-binary-transform-refactor-index-registration
...
Refactor the index assignment logic in wasm::BinaryTransform
2020-06-10 10:39:33 +02:00
TrentZ
7eb73b52a1
Rename blacklist for clarity.
2020-06-09 23:43:14 +02:00
Kamil Śliwak
edfbae0167
was/BinaryTransform: Remove unnecessary std:: prefixes from the .cpp file
2020-06-09 17:34:32 +02:00
Kamil Śliwak
b9ecccdece
wasm/BinaryTransform: Rename globals and functions to globalIDs and functionIDs
2020-06-09 17:29:34 +02:00
Kamil Śliwak
b2a8639c20
wasm/BinaryTransform: Make most of section generation stateless and pass global/function/type maps via parameters
2020-06-09 17:29:08 +02:00
Kamil Śliwak
adbd4be151
wasm/BinaryTransform: Make global/function/type maps constant
2020-06-09 17:26:00 +02:00
Kamil Śliwak
4b1ea93b41
wasm/BinaryTransform: Put code for enumerating globals/functions/types in separate functions
2020-06-09 17:26:00 +02:00
Harikrishnan Mulackal
d8263d331e
Ignore warnings for yulOptimizer tests
2020-06-09 13:03:57 +02:00
Harikrishnan Mulackal
73e634924e
Warn on YUL switch statement with only default statement
2020-06-09 12:32:53 +02:00
Christian Parpart
2af45c62c8
[Yul] Removed now disabled pc() from wasm backend.
2020-06-08 16:46:55 +02:00
Kamil Śliwak
fe0a0802b2
wasm/BinaryTransform: Fix wrong alignment for .load/.store with arguments smaller than 64-bits
2020-06-06 00:00:46 +02:00
Kamil Śliwak
976a0f9395
wasm/BinaryTransform: Don't add an empty local entry in binary wasm if there are no locals
2020-06-05 21:03:06 +02:00
chriseth
1f49edd29d
Merge pull request #9039 from ethereum/yul-remove-pc-instr
...
[Yul] remove PC instruction
2020-06-03 14:10:35 +02:00
Christian Parpart
9820df58ab
Remove Yul instruction PC and adapt tests accordingly.
2020-06-03 12:49:23 +02:00
Christian Parpart
c708a1bec2
AsmAnalysis: Fixes a superfluous whitespace in an error string
2020-06-03 12:23:06 +02:00
Kamil Śliwak
c96196c346
Define constants to make flag meanings more apparent in binary wasm
2020-05-28 22:17:02 +02:00
chriseth
65d8b6cf75
Merge pull request #9033 from a3d4/partfix-5819-add-errorid-to-error-class
...
Add unique ID to Error class
2020-05-28 16:24:47 +02:00
a3d4
011f8a462d
Remove AsmAnalyzer class-specific error reporting functions
2020-05-28 02:02:53 +02:00
chriseth
eb923af09c
Do not set source locations for small internal assembly routines.
2020-05-27 18:26:46 +02:00
chriseth
a06ac0f39f
Merge pull request #8958 from ethereum/evm-version-dependent-rules
...
[yul] Add support for EVM version-dependent rules.
2020-05-27 12:52:51 +02:00
Christian Parpart
b7fa5d5040
Mark EVM instruction pc()
as deprecated when used in inline assembly.
2020-05-27 12:07:23 +02:00
Alexander Arlt
a7b89065ca
[yul] Add support for EVM version-dependent rules.
2020-05-27 11:57:08 +02:00
chriseth
bd64e537cb
Fix implementation of leave.
2020-05-26 10:24:01 +02:00
Alex Beregszaszi
cfdfa36065
Rename wasm::Break(If) to wasm::Branch(If) for clarity
2020-05-21 00:02:02 +01:00
Kamil Śliwak
d199fc537b
Add configurable weights to CodeSize metric
2020-05-20 16:47:23 +02:00
chriseth
84092edc5d
Merge pull request #8914 from random-internet-cat/down-with-unique-ptr
...
Down with unique_ptr!
2020-05-20 13:22:06 +02:00
chriseth
4e9f6c3508
Fix webassembly loops by adding explicit break at the end.
2020-05-19 22:16:16 +02:00