Kamil Śliwak
16220db759
IRGeneratorForStatements: Fix undefined order of functions when generating code for index expressions
2023-07-13 11:06:11 +02:00
Kamil Śliwak
b1a773be2f
IRGenerator: Leave IR optimization up to the caller to avoid unnecessarily doing it twice
2023-06-07 19:44:40 +02:00
GiokaMarkella
28a1abf89a
Yul AST output on the CLI and in Standard JSON
2023-05-26 12:35:31 +02:00
Nikola Matic
3bab14747e
Fix hidden-overload in Types and remove CMake hack
2023-05-09 19:33:23 +02:00
Rodrigo Q. Saramago
a29f77369a
Move AST annotation of internal function dispatch IDs to ContractDefinition
...
Co-authored-by: Daniel <daniel@ekpyron.org>
Co-authored-by: Nikola Matić <nikola.matic@ethereum.org>
2023-05-06 20:31:27 +02:00
Kamil Śliwak
8a14680851
Disallow unary plus at the parsing stage
2023-04-18 16:47:00 +02:00
Rodrigo Q. Saramago
a0e62bbd3d
Annotate function ID of functions that may be called via the internal dispatch.
...
Co-authored-by: Daniel <daniel@ekpyron.org>
2023-03-20 20:14:41 +01:00
wechman
1a83fa7ebc
User-defined operators: Code generation
2023-02-22 00:39:25 +01:00
chriseth
07750ea23a
More aggressive runtime code exclusion.
2023-02-15 21:33:06 +01:00
Peter Lemenkov
603f9f7208
Type recognition workaround for some GCC compilers
...
Looks like somewhat old GCC compilers, namely 12.2.1, cannot recognize a
string literal sometimes. Let's help it to avoid error logs like this
one:
```
[ 75%] Building CXX object libsolidity/CMakeFiles/solidity.dir/codegen/ir/IRGeneratorForStatements.cpp.o
cd /builddir/build/BUILD/solidity-0.8.18/redhat-linux-build/libsolidity && /usr/bin/g++ -DBOOST_ATOMIC_DYN_LINK -DBOOST_ATOMIC_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_FILESYSTEM_NO_LIB -DBOOST_SYSTEM_DYN_LINK -DBOOST_SYSTEM_NO_LIB -DFMT_HEADER_ONLY=1 -DHAVE_CVC4 -DHAVE_Z3 -I/builddir/build/BUILD/solidity-0.8.18/redhat-linux-build/include -I/builddir/build/BUILD/solidity-0.8.18 -isystem /usr/include/z3 -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fuse-ld=gold -O3 -DNDEBUG -fstack-protector-strong -Wimplicit-fallthrough -fmacro-prefix-map=/builddir/build/BUILD/solidity-0.8.18=/solidity -Wpessimizing-move -Wredundant-move -Wall -Wextra -Werror -pedantic -Wmissing-declarations -Wno-unknown-pragmas -Wsign-conversion -Wconversion -Wextra-semi -Wduplicated-cond -Wlogical-op -fdiagnostics-color -std=c++17 -MD -MT libsolidity/CMakeFiles/solidity.dir/codegen/ir/IRGeneratorForStatements.cpp.o -MF CMakeFiles/solidity.dir/codegen/ir/IRGeneratorForStatements.cpp.o.d -o CMakeFiles/solidity.dir/codegen/ir/IRGeneratorForStatements.cpp.o -c /builddir/build/BUILD/solidity-0.8.18/libsolidity/codegen/ir/IRGeneratorForStatements.cpp
In file included from /usr/include/c++/12/string:40,
from /builddir/build/BUILD/solidity-0.8.18/libsolidity/ast/ASTForward.h:27,
from /builddir/build/BUILD/solidity-0.8.18/libsolidity/ast/AST.h:26,
from /builddir/build/BUILD/solidity-0.8.18/libsolidity/ast/ASTVisitor.h:26,
from /builddir/build/BUILD/solidity-0.8.18/libsolidity/codegen/ir/IRGeneratorForStatements.h:24,
from /builddir/build/BUILD/solidity-0.8.18/libsolidity/codegen/ir/IRGeneratorForStatements.cpp:22:
In function 'std::char_traits<char>::copy(char*, char const*, unsigned long)',
inlined from 'std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_copy(char*, char const*, unsigned long)' at /usr/include/c++/12/bits/basic_string.h:423:21,
inlined from 'std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace(unsigned long, unsigned long, char const*, unsigned long)' at /usr/include/c++/12/bits/basic_string.tcc:532:22,
inlined from 'std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::assign(char const*)' at /usr/include/c++/12/bits/basic_string.h:1647:19,
inlined from 'std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(char const*)' at /usr/include/c++/12/bits/basic_string.h:815:28,
inlined from '(anonymous namespace)::CopyTranslate::translateReference(solidity::yul::Identifier const&)' at /builddir/build/BUILD/solidity-0.8.18/libsolidity/codegen/ir/IRGeneratorForStatements.cpp:182:13:
/usr/include/c++/12/bits/char_traits.h:431:56: error: 'memcpy' accessing 9223372036854775810 or more bytes at offsets -4611686018427387902 and [-4611686018427387903, 4611686018427387904] may overlap up to 9223372036854775813 bytes at offset -3 [-Werror=restrict]
431 | return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n));
| ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
gmake[2]: *** [libsolidity/CMakeFiles/solidity.dir/build.make:695: libsolidity/CMakeFiles/solidity.dir/codegen/ir/IRGeneratorForStatements.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
gmake[2]: Leaving directory '/builddir/build/BUILD/solidity-0.8.18/redhat-linux-build'
gmake[1]: *** [CMakeFiles/Makefile2:414: libsolidity/CMakeFiles/solidity.dir/all] Error 2
gmake[1]: Leaving directory '/builddir/build/BUILD/solidity-0.8.18/redhat-linux-build'
gmake: *** [Makefile:139: all] Error 2
```
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
2023-02-08 17:51:56 +01:00
Rodrigo Q. Saramago
ef6ff2f055
Adds support for the EVM version "Paris".
...
Deprecates `block.difficulty` and disallow `difficulty()` in inline assembly for EVM versions >= paris.
The change is due to the renaming introduced by EIP-4399 (see: https://eips.ethereum.org/EIPS/eip-4399 ).
Introduces `block.prevrandao` in Solidity and `prevrandao()` in inline assembly for EVM versions >= paris.
Co-authored-by: Alex Beregszaszi <alex@rtfs.hu>
Co-authored-by: Daniel <daniel@ekpyron.org>
Co-authored-by: matheusaaguiar <95899911+matheusaaguiar@users.noreply.github.com>
Co-authored-by: Nikola Matić <nikola.matic@ethereum.org>
2023-01-23 18:50:36 +00:00
wechman
64a4f32bc2
Consistent terminology for attached/bound functions
2022-12-07 19:31:41 +01:00
Daniel Kirchner
bf26d3be5a
Add experimental EOF options for CLI and Standard JSON.
...
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
2022-11-23 19:53:44 +01:00
Alexander Arlt
b7abcb25ae
[libevmasm] Add Assembly::OptimiserSettings::translateSettings.
2022-10-26 14:11:59 +02:00
Alex Beregszaszi
725253551e
Improve FunctionSelector helpers
2022-09-27 17:58:32 +02:00
Nikola Matic
f6f0d6a360
Make hardcoded parts of the optimizer sequence configurable
2022-09-12 10:57:36 +02:00
Damian Wechman
6b99162457
Merge pull request #13406 from ethereum/slot_on_reference_fix
...
Fix `.slot` accessing via mapping reference in assembly
2022-09-05 14:00:18 +02:00
Marenz
f7cc29bec1
Add std:: qualifier to move() calls
2022-08-30 11:12:15 +02:00
wechman
cf3bae0839
Fix "slot" access via mapping reference in assembly
2022-08-17 07:53:52 +02:00
Matheus Aguiar
2282ea5e56
Added overflow checks after multiplication operation is executed.
2022-08-12 10:18:05 -03:00
Marenz
22c7cd22b9
Fix wrong cleanup when copying from calldata to memory
...
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
2022-08-08 13:07:16 +02:00
Ishtiaque Zahid
3e70a406af
fixed wrong tab alignment in YulUtilFunctions.h
2022-08-03 12:33:11 +06:00
Matheus Aguiar
4fd5c11af7
Checks for overflow/underflow after add/sub operations.
2022-06-23 14:41:12 -03:00
Daniel Kirchner
4c84b77a4b
Review suggested renaming.
2022-06-16 15:05:21 +02:00
Daniel Kirchner
cdf243a9af
Improved array copy routine for value type arrays from memory or calldata to storage.
2022-06-16 15:05:21 +02:00
Daniel Kirchner
7a84e9c875
Bugfix.
2022-06-14 18:26:16 +02:00
Saw-mon-and-Natalie
a265d9968a
removed a duplicate word from a comment.
2022-06-13 17:38:43 -07:00
chriseth
51ef6a62da
Fix removal of memory stores in inline assembly blocks.
2022-06-10 17:32:28 +02:00
chriseth
f0e43921f7
Merge pull request #12921 from ethereum/add_event_and_error_selector_fields_on_the_line_of_function_selector_field
...
Adding event and error selector fields
2022-05-23 11:34:13 +02:00
chriseth
30335c13ff
Merge pull request #13001 from matheusaaguiar/develop
...
Don't add an empty data slot to ABI-encoded empty strings from storage
2022-05-23 10:56:30 +02:00
nishant-sachdeva
d4c06d2b4e
Adding event and error selector fields on the lines of the function selector fields
2022-05-23 10:49:16 +02:00
Daniel Kirchner
953bc9fed2
Merge pull request #12983 from ethereum/hint-via-ir
...
Recommend `via-ir` whenever a stack too deep error is encountered.
2022-05-20 12:26:25 +02:00
Matheus Aguiar
33ea6a679d
Fixed bug that added a superfluous empty slot for data when encoding an empty string coming from storage.
...
Added tests covering empty string, uninitialized string, emptry string literal, byte arrays and explicit call to `abi.encode`.
2022-05-18 14:50:26 -03:00
Daniel Kirchner
d3a837b340
Bugfix.
2022-05-11 18:17:47 +02:00
hrkrshnn
5ae17c8e65
Recommend via-ir
whenever a stack too deep error is encountered.
2022-05-05 19:22:03 +02:00
Joshua Quinones
e1a59397c6
Renamed AssemblyStack to YulStack
...
All files, references, variables, comments, etc. were renamed to YulStack.
2022-04-08 20:28:55 +02:00
Daniel Kirchner
8cb01a9953
Fix and updated test.
2022-03-15 10:23:09 +01:00
Daniel Kirchner
e58c0b561d
Mark viaIR code generation as non-experimental.
2022-03-14 14:48:00 +01:00
Tyler
047034544e
Merge branch 'develop' of github.com:tfire/solidity into fix/remove-namespace-ast-annotations
2022-03-09 18:55:22 -05:00
Daniel Kirchner
e0c837b33b
Remove isCreation flag from OptimiserSettings.
2022-03-09 17:53:28 +01:00
Daniel Kirchner
ce0a3e93f2
Store whether an evmasm Assembly is creation code.
2022-03-09 17:42:29 +01:00
Tyler
519e1c9402
Specify namespaces
...
Fix references into solidity::util
2022-03-08 00:09:17 -05:00
chriseth
77c40cd2af
Merge pull request #12740 from ethereum/remove-locale-dependent-operations
...
Replace all locale-dependent operations with locale-agnostic counterparts
2022-03-07 17:56:58 +01:00
wechman
52dfccca98
Replace all locale-dependent operations with locale-agnostic counterparts
2022-03-07 17:23:08 +01:00
chriseth
4f19d68ee9
Merge pull request #12620 from ethereum/assemblyAnnotation
...
Memory-safety annotation for inline assembly.
2022-03-07 12:48:41 +01:00
nishant-sachdeva
beabc51c20
returnSize assigned according to truth value of returnInfo.dynamicReturnSize
2022-03-03 18:55:10 +05:30
Daniel Kirchner
9bcfcc61a7
Inline assembly without memory effects is implicitly memory safe.
2022-03-02 16:42:28 +01:00
Daniel Kirchner
e6848caac1
Allow annotating inline assembly as memory-safe.
2022-03-02 16:42:28 +01:00
chriseth
106921c278
Extract external function part into its own function.
2022-02-21 14:32:52 +01:00
nishant-sachdeva
276851ff91
Added support for FunctionType::Kind::StringConcat and functions string.concat
2022-02-10 22:08:47 +05:30