Commit Graph

4273 Commits

Author SHA1 Message Date
Alex Beregszaszi
7353804252 EVMHost: simplify code using new evmc features 2020-05-13 22:56:11 +01:00
Alex Beregszaszi
098cfd333f Update EVMC to 7.2.0 2020-05-13 22:29:35 +01:00
chriseth
1700bdc4ad
Merge pull request #8925 from ethereum/abiEncodeCalldataSlice
Allow abi encoding array slices without casting.
2020-05-13 18:55:16 +02:00
Daniel Kirchner
97296d8622 Allow ABI encoding for array slices without explicit casts. 2020-05-13 18:20:07 +02:00
Alexander Arlt
af44c05f1a Add new test. 2020-05-13 18:16:59 +02:00
Alexander Arlt
52b9a92ff8 Update existing tests. 2020-05-13 18:16:59 +02:00
chriseth
3872a1f000 Add support for SPDX license identifiers. 2020-05-13 18:16:59 +02:00
Mathias Baumann
820fdd9bf7 Escape backslashes when formatting 2020-05-13 17:08:37 +02:00
chriseth
e9446475bb
Merge pull request #8924 from ethereum/arraySliceBug
Fix array slice bug.
2020-05-13 16:06:28 +02:00
Daniel Kirchner
6f04664cfa Disallow array slicing for arrays with dyanmically encoded base types. 2020-05-13 15:52:22 +02:00
chriseth
aca700497c
Merge pull request #8903 from ethereum/exponentiation-bug
Fix exponentiation bug
2020-05-13 15:49:23 +02:00
Harikrishnan Mulackal
47e9a13e8a Fix exponentiation bug 2020-05-13 13:53:06 +05:30
chriseth
b2122d479f
Merge pull request #8915 from a3d4/partfix-5819-remove-erroroccurred-flag
Remove a dedicated error flag from DeclarationTypeChecker and other classes
2020-05-12 20:18:33 +02:00
a3d4
02d1f8c41a Remove a dedicated error flag from DeclarationTypeChecker 2020-05-12 18:13:17 +02:00
chriseth
7da453014d Fix source location of yul variable declarations without value. 2020-05-12 17:45:19 +02:00
chriseth
efd2f63c2c
Merge pull request #8706 from ethereum/solProtoSkeleton
ossfuzz: Add sol proto fuzzer skeleton
2020-05-12 17:15:23 +02:00
chriseth
901b421bb8
Merge pull request #8910 from ethereum/natspec-return-bug
Bug that ignored return tag when no other devdoc tags were present
2020-05-12 16:47:07 +02:00
Harikrishnan Mulackal
095e17f7f9 Bug that ignored return tag when no other devdoc tags were present 2020-05-12 20:05:22 +05:30
Harikrishnan Mulackal
c29d76f8f2 Test for function with value setting 2020-05-12 15:21:13 +05:30
Bhargava Shastry
596ac018f5 Fuzzer: Add test harness for solidity inheritance protobuf fuzzer
Co-Authored-By: Leonardo <leo@ethereum.org>
2020-05-11 23:56:27 +02:00
Bhargava Shastry
00946f3ea0 ossfuzz: Add sol proto fuzzer skeleton
Co-Authored-By: Leonardo <leo@ethereum.org>
2020-05-11 23:56:27 +02:00
Daniel Kirchner
c2f5a66a79 Implement .creationCode for Sol->Yul. 2020-05-11 18:51:51 +02:00
Daniel Kirchner
3fbde6e782
Merge pull request #8856 from ethereum/implicitConstructorCallvalueCheck
Implicit constructor callvalue check
2020-05-11 18:50:36 +02:00
Daniel Kirchner
79b217dfb3 Callvalue checks for implicit constructors. 2020-05-11 16:14:34 +02:00
chriseth
f1e0aa7a56
Merge pull request #8763 from ethereum/bareCall
IR code generation for call.
2020-05-11 16:06:54 +02:00
chriseth
3312150d7f
Merge pull request #8878 from ethereum/selecting-yul-optimisation-steps-in-strict-assembly-mode
Selecting Yul optimisation steps in strict assembly mode
2020-05-11 16:05:57 +02:00
chriseth
c0bf529236 Support bare calls. 2020-05-11 15:11:46 +02:00
chriseth
4c13ce24f0
Merge pull request #8887 from ethereum/boost-fs
Remove boost::filesystem where it is not needed
2020-05-11 15:09:54 +02:00
chriseth
0248303c15
Merge pull request #8872 from ethereum/int-min-max
implemented type(X).min and type(X).max for all integer types
2020-05-11 15:08:19 +02:00
Alex Beregszaszi
c31a93b3f2 Remove boost::filesystem where it is not needed
A two uses in CommonIO remain for the compiler (plus testing/tools use it extensively)
2020-05-11 11:19:11 +01:00
Harikrishnan Mulackal
e4e200f29f Changelog and tests 2020-05-11 15:29:05 +05:30
Harikrishnan Mulackal
e54c4eecfc implemented type(X).min and type(X).max for all integer types 2020-05-11 14:51:13 +05:30
Djordje Mijovic
591a5fff07 isoltest: WhiskersError and YulException treated differently when enforcing viaYul 2020-05-11 09:37:04 +02:00
Kamil Śliwak
6a58227830 CommandLineInterface: Make --yul-optimizations work in strict assembly mode 2020-05-08 22:29:57 +02:00
Kamil Śliwak
f56fd5bde8 cmdlineTests.sh: Allow using input.yul instead of input.sol in command-line tests 2020-05-08 22:05:04 +02:00
Harikrishnan Mulackal
4e58c672bb
Merge pull request #8855 from ethereum/update-external-repos
Updated external test repos
2020-05-08 22:51:48 +05:30
Harikrishnan Mulackal
704b334cf6 Updated external test repos 2020-05-08 21:39:02 +05:30
chriseth
a0e291bd06 Implement Yul IR generation for abi.encode* 2020-05-07 19:39:15 +02:00
chriseth
d0b82fe854
Merge pull request #8869 from ethereum/useSlotes
Use vector of slots.
2020-05-07 19:03:59 +02:00
chriseth
f38cf85482 Use vector of slots. 2020-05-07 17:54:04 +02:00
chriseth
4058ce8fe5
Merge pull request #8870 from ethereum/fix-conflicting-symbols-in-yulopti-and-optimiser-suite
Fix conflicting symbols in yulopti and OptimiserSuite
2020-05-07 17:40:17 +02:00
Kamil Śliwak
156bfadad3 yulopti: Fix conflict between 'l' in yulopti and OptimiserSuite and make future conflicts less likely
- OptimizerSuite uses letters so switching to punctuation marks in yulopti should help.
2020-05-07 17:27:24 +02:00
Kamil Śliwak
d3d1520870 yulopti: Add an error message to assetion triggered when an optimizer step abbreviation conflicts with yulopti controls 2020-05-07 17:21:39 +02:00
Kamil Śliwak
3e9fa7e388 yulopti: Print errors to stderr rather than stdout 2020-05-07 17:16:50 +02:00
Mathias Baumann
eb4926cb48 run addMissingFunctions only once 2020-05-07 17:06:11 +02:00
chriseth
3212cb6caa
Merge pull request #8859 from ethereum/noRuntimeForImmutable
trigger error when runtimeCode is called on contracts with immutables
2020-05-07 16:08:27 +02:00
chriseth
f42dc70c9f
Merge pull request #8863 from ethereum/nonReversedEncoder
Introduce non-reversed version of tupleEncoder.
2020-05-07 15:47:32 +02:00
Mathias Baumann
50e59f1008 trigger error when runtimeCode is called on contracts with immutables 2020-05-07 15:10:04 +02:00
chriseth
e986fde0c1 Introduce non-reversed version of tupleEncoder. 2020-05-07 15:08:09 +02:00
a3d4
5e9502bfae Fix ABI internal compiler error caused by an internal constructor 2020-05-07 05:49:49 +02:00
Alex Beregszaszi
327c75bc1b IR generation for shifts 2020-05-06 19:14:23 +02:00
Christian Parpart
3a93080ca9
Merge pull request #8821 from ethereum/remove-flag
Remove obsolete flag --optimize-yul from scripts
2020-05-06 16:20:23 +02:00
chriseth
76275cf34a
Merge pull request #8824 from ethereum/solYulDirtyMemory
Fix accessing memory reference types in yul codegen and clean up on memory reads.
2020-05-06 16:17:19 +02:00
Daniel Kirchner
234ffcf278
Merge pull request #8718 from ethereum/irConstants
IR generation for constants.
2020-05-06 16:05:17 +02:00
Mathias Baumann
02c5f1f748 Remove --optimize-yul flag for soltest 2020-05-06 11:49:40 +02:00
Daniel Kirchner
c25a3eba14 Fix accessing memory reference types in yul codegen and clean up on memory reads. 2020-05-06 11:34:11 +02:00
chriseth
4c1e821e01
Merge pull request #8845 from ethereum/solYulCleanup
[Sol->Yul] Cleanup for checked arithmetic and comparisons.
2020-05-05 17:58:36 +02:00
Daniel Kirchner
b580106c80 Yul parser hack and more yul tests. 2020-05-05 17:23:41 +02:00
chriseth
02c20698c9 IR generation for constants. 2020-05-05 17:07:55 +02:00
Daniel Kirchner
7b48c120b5 Always enforce via yul for isoltest runs. 2020-05-05 14:08:59 +02:00
Daniel Kirchner
28d25afab1 Cleanup tests for Sol->Yul arithmetic and comparison. 2020-05-05 13:38:31 +02:00
Djordje Mijovic
e8f6f63e77 [Sol2Yul] Adding support for builtin revert(string) 2020-05-05 07:05:39 +02:00
Djordje Mijovic
8b7f87eed5 [isoltest] Enforcing compileViaYul to be set if test can pass via yul 2020-05-05 00:38:13 +02:00
chriseth
1aef9c7d20
Merge pull request #8777 from ethereum/sol_yul_simplefunctions
[Sol - Yul] Add some built-in functions.
2020-05-04 16:07:10 +02:00
chriseth
3738cff6e6 Test updates. 2020-05-04 15:00:50 +02:00
chriseth
51ccb1519f Yul codegen for immutables. 2020-05-04 15:00:50 +02:00
Mathias Baumann
debcc8c056 Add setimmutable and loadimmutable to dialect. 2020-05-04 15:00:50 +02:00
Alexander Arlt
a9f4d14010 [Sol - Yul] Add support for send(..) & transfer(..) 2020-05-01 08:32:51 -05:00
Alexander Arlt
151e637336 [Sol - Yul] Add some built-in functions.
- simplifications for GasLeft, Selfdestruct and BlockHash.
- add support for addmod & mulmod.
2020-04-30 14:10:09 -05:00
chriseth
602b29cba7
Merge pull request #8796 from a3d4/fix-8760-typechecker-compiler-error
[Type Checker] Fix internal error when applying unary operators to tuples with empty components
2020-04-29 10:14:15 +02:00
a3d4
3bd15655cb Type Checker: Fix internal error when applying unary operators to tuples with empty components 2020-04-29 02:18:48 +02:00
chriseth
cc3992452f
Merge pull request #8791 from random-internet-cat/fix-8406
Fix broken assertion in ContractCompiler
2020-04-28 19:46:30 +02:00
Jason Cobb
8973732b74
Compare categories instead of types in ContractCompiler(740) 2020-04-28 13:13:45 -04:00
yoni206
4327434d07 Adding bit-vector NOT operation to the opcodes. 2020-04-28 09:43:31 -07:00
chriseth
55e34407d3
Merge pull request #8726 from ethereum/fix-8724
Yul proto spec: Add multiple variable declaration statement
2020-04-28 13:13:07 +02:00
Djordje Mijovic
f3f729549d [Sol->Yul] Enabling creation function call 2020-04-27 16:15:57 +02:00
Alex Beregszaszi
99aa821410
Merge pull request #8720 from ethereum/irSha256
IR generation for sha256.
2020-04-27 13:44:26 +01:00
chriseth
3828adbbbd
Merge pull request #8761 from ethereum/conditonalStrings
Conditional strings for Whiskers.
2020-04-27 14:07:30 +02:00
Bhargava Shastry
5113af1df0 Update test/tools/ossfuzz/protoToYul.h
Co-Authored-By: Leonardo <leo@ethereum.org>
2020-04-27 14:01:11 +02:00
Bhargava Shastry
62e5ccec90 Minor code factoring to clarify for init scope extension 2020-04-27 14:01:11 +02:00
Bhargava Shastry
7280ed716a Yul proto spec: Add multiple variable declaration statement 2020-04-27 14:01:11 +02:00
chriseth
5b92dedeed
Merge pull request #8753 from a3d4/fix-sourcereferenceformathuman-leftpad
Fix leftpad in SourceReferenceFormatterHuman
2020-04-27 11:22:14 +02:00
chriseth
dda883b585 IR generation for sha256. 2020-04-27 11:10:20 +02:00
chriseth
aa8107f45a Conditional strings for Whiskers. 2020-04-27 11:07:56 +02:00
chriseth
61b1369fc2
Merge pull request #8701 from ethereum/solc-yul-chromosome
solc option for selecting yul optimisations
2020-04-27 10:44:14 +02:00
Alexander Arlt
66edaf43f4 [Sol - Yul] Add support for built-in logN(). 2020-04-25 11:10:28 -05:00
Alexander Arlt
2fa26f4e92 [Sol - Yul] Add support for built-in selfdestruct(..). 2020-04-24 17:03:41 -05:00
Kamil Śliwak
c8b612536f Add yulDetails.optimizerSteps to the standard JSON interface 2020-04-24 17:30:56 +02:00
Kamil Śliwak
35cc64e33d Add --yul-optimizations option to the command-line interface 2020-04-24 17:30:56 +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
chriseth
dd7aebe7f1
Merge pull request #8769 from ethereum/fix-cmdlinetests-not-removing-tmp-all-files
Fix cmdlineTests.sh not removing all tmp.XXXXXX files
2020-04-24 15:35:17 +02:00
Kamil Śliwak
172b6c245f cmdlineTests.sh: Fix the script not removing all temporary files it creates in /tmp
- The script was leaving hundreds of loose `tmp.XXXXXX` and `tmp.XXXXXX.bak` files in `/tmp` after each run
- There's a trap handler that removes them but it's being registered multiple times in a loop and only the last one actually runs when the script exits. It's still useful because it removes the remaining files from the most recent iteration but on its own it's not enough to clean up everything.
2020-04-24 15:09:26 +02:00
Kamil Śliwak
d3da878200 Enable internal library calls 2020-04-24 15:00:51 +02:00
Kamil Śliwak
56a85d6cb3 IRGeneratorForStatements: Handle internal calls to functions from specific base contracts as static calls rather than calls via pointers 2020-04-24 15:00:16 +02:00
chriseth
2b39f3b988
Merge pull request #8766 from ethereum/sol_yul_gasleft
[Sol - Yul] Add support for built-in gasleft().
2020-04-24 14:24:01 +02:00
Leonardo Alt
059d0bdebb Revert "Use Spacer option to improve performance of constant arrays"
This reverts commit 92059fa848.
2020-04-24 11:55:58 +02:00
a3d4
8717c073a6 Fix leftpad in SourceReferenceFormatterHuman 2020-04-24 00:34:24 +02:00
Alexander Arlt
aafa4583df [Sol - Yul] Add support for built-in gasleft(). 2020-04-23 17:14:03 -05:00
Kamil Śliwak
e65a5a562e IRGenerationContext::internalDispatch(): Fix code generated when the function called via pointer does not return anything 2020-04-23 21:16:41 +02:00
chriseth
d136e7dc95 Rules for optimizing idempotency for bitwise operations. 2020-04-23 14:21:00 +02:00