-
Notifications
You must be signed in to change notification settings - Fork 110
Open
Description
Overview
When adding the following to foundry.toml
via_ir = true
optimizer = true
You get the error
uniswapfoundation/v4-template - (main)$ forge test
[⠊] Compiling...
[⠘] Compiling 87 files with Solc 0.8.28
[⠃] Solc 0.8.28 finished in 4.94s
Error: Compiler run failed:
Error: Yul exception:Variable expr_mpos_2 is 1 too deep in the stack [ var_amount0Max RET _2 expr_mpos_2 expr_mpos_1 _1 expr_mpos var_deadline var_posm_address _2 var_recipient var_poolKey_mpos var_tickUpper var_tickLower var_hookData_mpos var_recipient var_amount1Max var_amount0Max expr expr_1 ]
No memoryguard was present. Consider using memory-safe assembly only and annotating it via 'assembly ("memory-safe") { ... }'.
uniswapfoundation/v4-template - (main)$
Removing them tests succesfully
Additional Information
Note that I tested the included .gitmodules (hookmate and uniswap-hooks) individually, and they could compile optimized code. Also if you remove all the tests it will compile succesfully with optimizer = true.
Therefore, it appears that the tests use of the gitmodules are causing the error, likely due to the' create2' functionality.
I'll look more into this as time permits.
Workaround - Hack
Currently I have added a release profile into foundry.toml as follows
[profile.release]
solc_version = "0.8.30"
evm_version = "prague"
ffi = true
fs_permissions = [{access = "read-write", path = ".forge-snapshots/"}]
via_ir = true
optimizer = true
and when building for a release will specify the profile and the file I wish to compile.
Let me know if there is a better approach for this.
🙏 💙 🙏
Metadata
Metadata
Assignees
Labels
No labels