Lucas Ste
Lucas Ste
Our support for multidimensional arrays is broken and the semantics Solidity uses for them is confusing. Here are some facts to discuss: 1. I understand `int[4][2] vec` as a matrix...
The CFG does not have an effective way to represent pointers, consequently, some constructs are not correctly implemented. One example is the `Type::BufferPointer` that originates after we advance a pointer...
This contract causes an access violation in Solana's mock VM, because `fun` is a null pointer. ```solidity contract C { function test(uint256 newAddress, bytes4 newSelector) public view returns (bytes4, address)...
@xermicus had a good idea to improve the `update_map` function in strength reduce, as discussed [here](https://github.com/hyperledger-labs/solang/pull/921#discussion_r924998507). We should try that when there is time to do so. https://github.com/hyperledger-labs/solang/blob/2b7fc1c0416720ba26c5eabcd97901988866aef3/src/codegen/strength_reduce/reaching_values.rs#L98
```solidity contract Testing { struct PaddedStruct { uint128 a; uint8 b; bytes32 c; } PaddedStruct[2][3][] stor_arr; function addData() public { PaddedStruct memory a = PaddedStruct(56, 1, "oi"); PaddedStruct memory b...
Solang's intermediate representation does not use a static single assignment (SSA) form. This has introduced some ugliness in our code base. For instance, we have two three different implementations of...
Currently, Solang checks the semantic correctness of the code while building the AST, i.e. it happens during a parse tree traversal. In some cases, we are not able to infer...
Our own `memcpy` function is not exported as a public symbol, preventing LLVM from liking it to its memory copy intrinsic function. We should set this up and update our...
This contract works fine for `solc`, but crashes on Solang (for all targets): ```solidity contract Testing { uint16[2][4][] stor_arr; function getThis() public returns (uint16) { uint16[2][4][] memory arr2 = stor_arr;...
When we declare a constant variable that has an initializer, e.g. `bool constant x = 0 < 2`, we evaluate the actual constant value in compiler time. Currently, there is...