solidity
solidity copied to clipboard
Solidity, the Smart Contract Programming Language
There are features marked as deprecated and planned to be removed, many of them in the next breaking release v.0.9, which are listed in #15795 . We also need to...
Partially solves #15795 and #14770.
When assigning a newly pushed (and thus empty) dynamic storage array to another, the IR-based pipeline (`--via-ir`) generates less efficient code compared to the legacy pipeline. We discovered this inefficiency...
## Environment - Compiler version: solc 0.8.31 ## Steps to Reproduce Compile the following code using the command `solc a.sol --bin --optimize --no-optimize-yul` ``` contract C { struct A {...
evmasm peephole optimizer will apply EOF-only optimization passes, like IsZeroIsZeroRJumpI, that will never apply in non-EOF bytecodes. There should be a check to exclude running these passes ahead of time...
## Description The following code triggers an ICE when compiling with `--ir`. I think the issue comes from passing a function type that is not identical but implicitly convertible to...
## Abstract For implementing deployments and upgrades for ERC-2535 Diamonds it is necessary to get all the function selectors of a contract so they can be added to the diamond...
## Description The compiler terminates with a `Yul assertion failed: ./libyul/AsmAnalysis.cpp(147)` when trying to compile the program below via the `solc` CLI with the following Yul optimization sequence `[eT]j[t]s:O`. The...
evmasm::AssemblyItem::operator== is pretty hot, especially in the peephole optimizer: https://github.com/argotorg/solidity/blob/08c4e0c6cfab9d6f303fefbf0ad081e06fa4a532/libevmasm/AssemblyItem.h#L248-L252 This operator calls hasInstruction() twice, once in the actual operator, and the second time in the instruction() solAssert: https://github.com/argotorg/solidity/blob/08c4e0c6cfab9d6f303fefbf0ad081e06fa4a532/libevmasm/AssemblyItem.h#L218 This...
Each type of variable has a different slot size. What is the size (in bits) for each type? Where can I find the help documentation for this? How does the...