paritytech / paritytech/revive

EVM codegen in solc optimizations prevents contract builds

Open
#586 2 comments 0 reactions 1 assignee View on GitHub

@xermicus is already working on this.

Since Aug 6, 2026.

Dominant language
Rust
Stars
102
Forks
26
Avg merge
1d 13h
Merged PRs (30d)
6

Description

Even though we request the optimized Yul IR (and no EVM bytecode) from solc, due to some optimization passes, EVM codegen is still run. This can lead to errors like Could not create stack layout after 1000 iterations. when compiling contracts. But PVM is in no way connected to the EVM stack, and Yul has no stack layout.

Setting yulDetails.stackAllocation: false does not help in all cases, found a reproducer that just OOMs (my 64gb machine) in that case.

solc is notorious for such bugs. Because even --optimize --no-optimize-yul forcefully enables stack allocation, we have no other choice left than to request the unoptimized Yul. This should be fine; any remaining solc optimizer gains which are not covered yet by either the NY opt or LLVM passes can just be re-implemented in NY.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.