-
Notifications
You must be signed in to change notification settings - Fork 5.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ICE when copying storage structs to memory arrays via IR #12558
Comments
This will happen for any reference type, e.g. the following will also trigger it:
|
Co incidentally what I have been trying to get the fuzzer to generate :-) |
Another one - apparently also doesn't have to be storage :-D...
For some reason we only took care of memory-to-memory there :-). |
Actually, I think this is even the same issue as #12220 |
Just a heads up - I just merged #12560 so when this if fixed, please remember to re-enable the preset that triggers this ICE:
Hopefully it will pass. If not, disable it again and update the comment to state the new reason for disabling it. |
Short update: Fuzzer reports this case (via different canonical type
Edit: Struck through comment regarding function types being uninteresting |
External function pointers as base type are actually a nice special case to keep in mind (since it's a multi-slot type), so it's a good case to test specifically when fixing this :-). |
Description
Found while working on the external test for Pool Together v4. The contract does not compile via IR at all due to an Internal Compiler Error. With legacy codegen the compilation succeeds.
Steps to Reproduce
Here's a distilled repro for the ICE:
It only happens when the target struct is a part of an array (does not matter whether dynamic or static). Does not happen when the target is just a single struct.
EDIT: When this is fixed, remember to re-enable the
ir-optimize-evm+yul
preset in thepool-together
external test (which is now indevelop
):solidity/test/externalTests/pool-together.sh
Line 48 in 93f7d5f
Environment
The text was updated successfully, but these errors were encountered: