Skip to content

fix(compiler): reject incomplete EVM memory facts - #583

Open
abmcar wants to merge 1 commit into
DTVMStack:mainfrom
abmcar:codex/fix-memory-plan-selector-dse
Open

fix(compiler): reject incomplete EVM memory facts#583
abmcar wants to merge 1 commit into
DTVMStack:mainfrom
abmcar:codex/fix-memory-plan-selector-dse

Conversation

@abmcar

@abmcar abmcar commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

1. Does this PR affect any open issues?(Y/N) and add issue references (e.g. "fix #123", "re #123".):

  • N
  • Y

2. What is the scope of this PR (e.g. component or file name):

EVM multipass frontend memory facts and memory-plan consumers.

3. Provide a description of the PR(e.g. more details, effects, motivations or doc link):

  • Affects user behaviors
  • Contains CI/CD configuration changes
  • Contains documentation changes
  • Contains experimental features
  • Performance regression: Consumes more CPU
  • Performance regression: Consumes more Memory
  • Other

Mainnet block 21800000 exposed a multipass regression in the 0x Exchange
proxy. A selector store observed by KECCAK256 was eliminated, so multipass
hashed a zero selector, loaded the wrong proxy storage slot, and reverted.
The receipt was internally gas-consistent, but the wrong execution path caused
the block-level kWrongBlockGas failure.

The first bad commit treated an unresolved block-entry stack depth as zero
while collecting memory facts. A dynamic jump target could therefore simulate
SWAP3 without its hidden live-ins and publish a false alias proof.

This change:

  • publishes opcode-level memory facts only for resolved, consistent entry
    stacks that are not derived from dynamic dispatch;
  • retains CFG topology while marking other blocks as incomplete;
  • makes MemoryFactsBuilder::observeOpcode a no-op for an incomplete current
    block before any stack, value-id, operation, or metadata update;
  • resets cross-block minimum-memory guarantees and stops linear-region plans
    at incomplete blocks; and
  • adds focused coverage for the selector-store motif, visitor seams, builder
    ownership, prechecks, grouping, dead-store elimination, and load forwarding.

Blocks with incomplete entry facts may lose memory-plan optimization
opportunities. Reliable static-entry blocks retain the existing proofs.
The gas schedule, EVMC host contract, replay witness, expected values, and
multipass mode are unchanged.

Change doc: docs/changes/2026-07-28-evm-memory-plan-selector-dse/README.md

Validation:

  • tools/format.sh check: pass
  • full build: pass, with no new compiler warnings
  • focused regressions: 7/7
  • EVM frontend tests: 115/115
  • interpreter-versus-multipass differential tests: 65/65
  • external-VM unit tests: 223/223
  • multipass EVM assembly tests: 209/209
  • CTest targets: 12/12
  • original block 21800000: exit 0, 58 transactions, gas 22,416,172,
    receipt root + bloom and union post-state verified
  • sealed blocks 21800000–21800003: exit 0, 499 transactions, gas 70,826,847;
    fresh DB, DB access, header/body, receipt + bloom, per-block post, and union
    post checks all true

The external EEST run passes 2710/2723 cases. Its 13 failing test names match
the same-environment clean-upstream baseline set captured during hardening;
the evmone and EEST assets are external to this repository.
tools/check_change_doc.py is absent from the current repository, so the
document declaration helper could not run locally.

4. Are there any breaking changes?(Y/N) and describe the breaking changes(e.g. more details, motivations or doc link):

  • N
  • Y

5. Are there test cases for these changes?(Y/N) select and add more details, references or doc links:

  • Unit test
  • Integration test
  • Benchmark (add benchmark stats below)
  • Manual test (add detailed scripts or steps below)
  • Other

The regression tests are in src/tests/evm_jit_frontend_tests.cpp. Replay
commands, binary and corpus hashes, result JSON, and exported post-state are
sealed under the external evidence directory referenced by the change doc.

6. Release note

Fix EVM multipass memory analysis so incomplete dynamic-dispatch entry facts
cannot eliminate stores that later memory operations observe.

Copilot AI review requested due to automatic review settings July 28, 2026 11:49

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions

github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown

⚡ Performance Regression Check Results

✅ Performance Check Passed (interpreter)

Performance Benchmark Results (threshold: 25%)

Benchmark Baseline (us) Current (us) Change Status
total/main/blake2b_huff/8415nulls 2.42 2.46 +1.4% PASS
total/main/blake2b_huff/empty 0.04 0.04 +3.8% PASS
total/main/blake2b_shifts/8415nulls 14.00 15.87 +13.4% PASS
total/main/sha1_divs/5311 8.00 8.04 +0.5% PASS
total/main/sha1_divs/empty 0.10 0.10 -1.2% PASS
total/main/sha1_shifts/5311 5.34 5.30 -0.8% PASS
total/main/sha1_shifts/empty 0.04 0.04 +4.5% PASS
total/main/snailtracer/benchmark 86.38 94.23 +9.1% PASS
total/main/structarray_alloc/nfts_rank 1.11 1.11 -0.3% PASS
total/main/swap_math/insufficient_liquidity 0.00 0.00 +0.9% PASS
total/main/swap_math/received 0.01 0.01 -0.1% PASS
total/main/swap_math/spent 0.01 0.01 +5.2% PASS
total/main/weierstrudel/1 0.32 0.30 -6.0% PASS
total/main/weierstrudel/15 3.43 3.40 -0.9% PASS
total/micro/JUMPDEST_n0/empty 2.64 2.64 -0.0% PASS
total/micro/jump_around/empty 0.12 0.11 -7.0% PASS
total/micro/loop_with_many_jumpdests/empty 69.99 66.90 -4.4% PASS
total/micro/memory_grow_mload/by1 0.18 0.17 -6.5% PASS
total/micro/memory_grow_mload/by16 0.20 0.20 -0.4% PASS
total/micro/memory_grow_mload/by32 0.11 0.11 -0.4% PASS
total/micro/memory_grow_mload/nogrow 0.09 0.09 +4.5% PASS
total/micro/memory_grow_mstore/by1 0.19 0.20 +3.9% PASS
total/micro/memory_grow_mstore/by16 0.11 0.11 +0.9% PASS
total/micro/memory_grow_mstore/by32 0.23 0.23 -0.2% PASS
total/micro/memory_grow_mstore/nogrow 0.19 0.18 -5.8% PASS
total/micro/signextend/one 0.26 0.29 +11.5% PASS
total/micro/signextend/zero 0.50 0.47 -5.0% PASS
total/synth/ADD/b0 2.31 2.31 +0.1% PASS
total/synth/ADD/b1 2.79 2.79 +0.2% PASS
total/synth/ADDRESS/a0 6.26 6.26 -0.1% PASS
total/synth/ADDRESS/a1 5.10 5.11 +0.2% PASS
total/synth/AND/b0 2.15 2.15 +0.2% PASS
total/synth/AND/b1 2.22 2.25 +1.5% PASS
total/synth/BYTE/b0 6.14 6.17 +0.4% PASS
total/synth/BYTE/b1 7.93 8.97 +13.1% PASS
total/synth/CALLDATASIZE/a0 5.61 5.24 -6.6% PASS
total/synth/CALLDATASIZE/a1 3.39 3.38 -0.3% PASS
total/synth/CALLER/a0 5.94 5.87 -1.1% PASS
total/synth/CALLER/a1 6.06 6.43 +6.0% PASS
total/synth/CALLVALUE/a0 3.52 3.52 -0.0% PASS
total/synth/CALLVALUE/a1 5.81 5.81 -0.0% PASS
total/synth/CODESIZE/a0 6.45 5.95 -7.7% PASS
total/synth/CODESIZE/a1 6.20 6.12 -1.4% PASS
total/synth/DUP1/d0 1.51 1.68 +11.4% PASS
total/synth/DUP1/d1 1.68 1.66 -0.7% PASS
total/synth/DUP10/d0 1.69 1.56 -8.1% PASS
total/synth/DUP10/d1 1.73 1.74 +0.2% PASS
total/synth/DUP11/d0 1.08 1.09 +0.1% PASS
total/synth/DUP11/d1 1.73 1.72 -0.7% PASS
total/synth/DUP12/d0 1.51 1.55 +2.8% PASS
total/synth/DUP12/d1 1.09 1.05 -3.5% PASS
total/synth/DUP13/d0 1.57 1.60 +2.2% PASS
total/synth/DUP13/d1 2.07 1.87 -9.9% PASS
total/synth/DUP14/d0 1.07 1.02 -4.6% PASS
total/synth/DUP14/d1 1.73 1.70 -1.6% PASS
total/synth/DUP15/d0 1.59 1.54 -3.3% PASS
total/synth/DUP15/d1 1.07 1.08 +0.4% PASS
total/synth/DUP16/d0 1.55 1.57 +1.6% PASS
total/synth/DUP16/d1 1.81 1.66 -8.0% PASS
total/synth/DUP2/d0 1.07 0.83 -21.7% PASS
total/synth/DUP2/d1 1.80 1.75 -2.6% PASS
total/synth/DUP3/d0 1.57 1.60 +1.9% PASS
total/synth/DUP3/d1 1.09 1.05 -3.6% PASS
total/synth/DUP4/d0 1.55 1.50 -3.6% PASS
total/synth/DUP4/d1 1.73 1.75 +1.2% PASS
total/synth/DUP5/d0 1.07 1.07 +0.1% PASS
total/synth/DUP5/d1 1.66 1.72 +3.5% PASS
total/synth/DUP6/d0 1.55 1.58 +2.4% PASS
total/synth/DUP6/d1 1.09 1.06 -2.8% PASS
total/synth/DUP7/d0 1.49 1.52 +2.0% PASS
total/synth/DUP7/d1 1.79 1.74 -3.2% PASS
total/synth/DUP8/d0 1.08 1.08 +0.2% PASS
total/synth/DUP8/d1 1.74 1.74 -0.1% PASS
total/synth/DUP9/d0 1.51 1.57 +3.9% PASS
total/synth/DUP9/d1 1.09 1.05 -3.6% PASS
total/synth/EQ/b0 4.54 4.54 +0.1% PASS
total/synth/EQ/b1 4.85 4.84 -0.1% PASS
total/synth/GAS/a0 3.85 3.86 +0.3% PASS
total/synth/GAS/a1 6.38 6.92 +8.5% PASS
total/synth/GT/b0 4.81 4.81 -0.2% PASS
total/synth/GT/b1 4.91 4.96 +1.0% PASS
total/synth/ISZERO/u0 7.04 7.09 +0.7% PASS
total/synth/JUMPDEST/n0 2.66 2.64 -0.7% PASS
total/synth/LT/b0 4.81 4.82 +0.2% PASS
total/synth/LT/b1 4.37 4.40 +0.6% PASS
total/synth/MSIZE/a0 5.49 5.47 -0.3% PASS
total/synth/MSIZE/a1 5.88 5.53 -6.0% PASS
total/synth/MUL/b0 5.56 5.60 +0.7% PASS
total/synth/MUL/b1 5.35 5.37 +0.4% PASS
total/synth/NOT/u0 1.94 1.95 +0.0% PASS
total/synth/OR/b0 2.12 2.19 +3.3% PASS
total/synth/OR/b1 1.78 1.80 +0.7% PASS
total/synth/PC/a0 5.43 5.43 +0.0% PASS
total/synth/PC/a1 3.47 3.41 -1.5% PASS
total/synth/PUSH1/p0 1.83 1.76 -3.8% PASS
total/synth/PUSH1/p1 1.63 1.65 +1.1% PASS
total/synth/PUSH10/p0 1.80 1.89 +5.1% PASS
total/synth/PUSH10/p1 1.64 1.66 +0.8% PASS
total/synth/PUSH11/p0 1.80 1.82 +1.0% PASS
total/synth/PUSH11/p1 2.19 2.08 -5.0% PASS
total/synth/PUSH12/p0 1.20 1.21 +1.0% PASS
total/synth/PUSH12/p1 2.06 1.95 -5.4% PASS
total/synth/PUSH13/p0 1.82 1.82 -0.0% PASS
total/synth/PUSH13/p1 1.65 1.66 +0.5% PASS
total/synth/PUSH14/p0 1.95 1.91 -2.1% PASS
total/synth/PUSH14/p1 2.14 2.10 -1.9% PASS
total/synth/PUSH15/p0 1.20 1.21 +0.4% PASS
total/synth/PUSH15/p1 2.20 2.37 +7.8% PASS
total/synth/PUSH16/p0 1.85 1.90 +2.8% PASS
total/synth/PUSH16/p1 1.65 1.66 +0.7% PASS
total/synth/PUSH17/p0 1.78 1.89 +6.2% PASS
total/synth/PUSH17/p1 1.98 2.02 +1.9% PASS
total/synth/PUSH18/p0 1.20 1.21 +1.0% PASS
total/synth/PUSH18/p1 1.94 2.07 +6.7% PASS
total/synth/PUSH19/p0 1.83 2.03 +10.9% PASS
total/synth/PUSH19/p1 1.65 1.67 +0.7% PASS
total/synth/PUSH2/p0 1.82 1.92 +5.7% PASS
total/synth/PUSH2/p1 2.07 1.93 -6.8% PASS
total/synth/PUSH20/p0 1.80 1.96 +8.9% PASS
total/synth/PUSH20/p1 2.09 2.13 +1.9% PASS
total/synth/PUSH21/p0 1.20 1.21 +0.6% PASS
total/synth/PUSH21/p1 2.02 1.93 -4.6% PASS
total/synth/PUSH22/p0 1.84 1.87 +1.8% PASS
total/synth/PUSH22/p1 1.65 1.66 +0.5% PASS
total/synth/PUSH23/p0 1.89 1.84 -2.5% PASS
total/synth/PUSH23/p1 2.36 2.02 -14.3% PASS
total/synth/PUSH24/p0 1.20 1.21 +0.7% PASS
total/synth/PUSH24/p1 2.01 1.97 -2.0% PASS
total/synth/PUSH25/p0 1.83 1.84 +0.8% PASS
total/synth/PUSH25/p1 1.64 1.67 +2.2% PASS
total/synth/PUSH26/p0 2.01 1.84 -8.7% PASS
total/synth/PUSH26/p1 2.08 2.12 +1.9% PASS
total/synth/PUSH27/p0 1.20 1.21 +1.3% PASS
total/synth/PUSH27/p1 2.01 1.94 -3.5% PASS
total/synth/PUSH28/p0 2.08 1.89 -9.1% PASS
total/synth/PUSH28/p1 1.66 1.66 +0.2% PASS
total/synth/PUSH29/p0 1.99 1.80 -9.8% PASS
total/synth/PUSH29/p1 2.01 1.99 -0.1% PASS
total/synth/PUSH3/p0 1.20 1.21 +0.9% PASS
total/synth/PUSH3/p1 2.15 2.06 -4.2% PASS
total/synth/PUSH30/p0 1.32 1.26 -4.7% PASS
total/synth/PUSH30/p1 2.02 2.09 +3.7% PASS
total/synth/PUSH31/p0 1.81 1.97 +9.2% PASS
total/synth/PUSH31/p1 1.67 1.70 +1.6% PASS
total/synth/PUSH32/p0 2.01 1.98 -1.2% PASS
total/synth/PUSH32/p1 2.21 2.36 +7.1% PASS
total/synth/PUSH4/p0 1.79 1.90 +6.4% PASS
total/synth/PUSH4/p1 1.65 1.66 +0.6% PASS
total/synth/PUSH5/p0 1.83 2.02 +10.3% PASS
total/synth/PUSH5/p1 2.01 2.05 +1.9% PASS
total/synth/PUSH6/p0 1.20 1.21 +0.9% PASS
total/synth/PUSH6/p1 2.00 2.00 -0.2% PASS
total/synth/PUSH7/p0 1.87 1.82 -2.7% PASS
total/synth/PUSH7/p1 1.64 1.67 +1.6% PASS
total/synth/PUSH8/p0 1.93 1.82 -4.1% PASS
total/synth/PUSH8/p1 2.03 1.96 -3.3% PASS
total/synth/PUSH9/p0 1.19 1.21 +1.2% PASS
total/synth/PUSH9/p1 2.01 2.03 +0.8% PASS
total/synth/RETURNDATASIZE/a0 3.38 3.55 +5.1% PASS
total/synth/RETURNDATASIZE/a1 6.20 6.33 +2.1% PASS
total/synth/SAR/b0 3.98 4.02 +1.1% PASS
total/synth/SAR/b1 7.15 7.82 +9.3% PASS
total/synth/SGT/b0 3.61 3.61 -0.1% PASS
total/synth/SGT/b1 3.40 3.42 +0.6% PASS
total/synth/SHL/b0 3.74 3.73 -0.3% PASS
total/synth/SHL/b1 1.87 1.88 +0.5% PASS
total/synth/SHR/b0 3.74 3.77 +0.9% PASS
total/synth/SHR/b1 3.22 3.22 +0.3% PASS
total/synth/SIGNEXTEND/b0 3.29 3.29 +0.1% PASS
total/synth/SIGNEXTEND/b1 6.56 6.39 -2.6% PASS
total/synth/SLT/b0 3.44 3.44 +0.2% PASS
total/synth/SLT/b1 3.71 3.78 +1.8% PASS
total/synth/SUB/b0 2.61 2.64 +1.4% PASS
total/synth/SUB/b1 2.77 2.72 -1.8% PASS
total/synth/SWAP1/s0 1.51 1.51 +0.3% PASS
total/synth/SWAP10/s0 1.52 1.52 +0.2% PASS
total/synth/SWAP11/s0 2.73 2.79 +2.0% PASS
total/synth/SWAP12/s0 2.79 2.65 -4.8% PASS
total/synth/SWAP13/s0 1.53 1.53 -0.3% PASS
total/synth/SWAP14/s0 3.36 2.61 -22.2% PASS
total/synth/SWAP15/s0 2.79 2.80 +0.4% PASS
total/synth/SWAP16/s0 1.53 1.61 +5.4% PASS
total/synth/SWAP2/s0 2.72 2.72 +0.0% PASS
total/synth/SWAP3/s0 2.73 3.46 +26.8% PASS
total/synth/SWAP4/s0 1.57 1.52 -3.0% PASS
total/synth/SWAP5/s0 2.77 2.79 +0.5% PASS
total/synth/SWAP6/s0 2.69 2.80 +4.2% PASS
total/synth/SWAP7/s0 1.52 1.52 +0.3% PASS
total/synth/SWAP8/s0 2.67 2.83 +6.1% PASS
total/synth/SWAP9/s0 2.66 2.68 +0.7% PASS
total/synth/XOR/b0 2.06 2.03 -1.4% PASS
total/synth/XOR/b1 2.17 2.24 +3.5% PASS
total/synth/loop_v1 8.77 10.00 +14.0% PASS
total/synth/loop_v2 8.88 8.73 -1.7% PASS

Summary: 194 benchmarks, 0 regressions


✅ Performance Check Passed (multipass)

Performance Benchmark Results (threshold: 25%)

Benchmark Baseline (us) Current (us) Change Status
total/main/blake2b_huff/8415nulls 1.32 1.45 +9.5% PASS
total/main/blake2b_huff/empty 0.03 0.02 -2.3% PASS
total/main/blake2b_shifts/8415nulls 4.28 4.30 +0.4% PASS
total/main/sha1_divs/5311 0.87 0.86 -2.1% PASS
total/main/sha1_divs/empty 0.01 0.01 +1.1% PASS
total/main/sha1_shifts/5311 0.78 0.76 -3.1% PASS
total/main/sha1_shifts/empty 0.01 0.01 -0.9% PASS
total/main/structarray_alloc/nfts_rank 0.26 0.28 +4.6% PASS
total/main/swap_math/insufficient_liquidity 0.00 0.00 +0.3% PASS
total/main/swap_math/received 0.01 0.01 +4.8% PASS
total/main/swap_math/spent 0.01 0.01 +0.1% PASS
total/main/weierstrudel/1 0.33 0.34 +3.2% PASS
total/main/weierstrudel/15 3.66 3.69 +0.9% PASS
total/micro/JUMPDEST_n0/empty 0.00 0.00 +0.2% PASS
total/micro/jump_around/empty 0.07 0.08 +12.9% PASS
total/micro/loop_with_many_jumpdests/empty 0.01 0.01 +0.4% PASS
total/micro/memory_grow_mload/by1 0.02 0.02 +12.4% PASS
total/micro/memory_grow_mload/by16 0.02 0.02 -4.2% PASS
total/micro/memory_grow_mload/by32 0.01 0.01 +0.5% PASS
total/micro/memory_grow_mload/nogrow 0.01 0.01 -1.3% PASS
total/micro/memory_grow_mstore/by1 0.02 0.02 -4.2% PASS
total/micro/memory_grow_mstore/by16 0.01 0.01 -0.3% PASS
total/micro/memory_grow_mstore/by32 0.03 0.02 -5.6% PASS
total/micro/memory_grow_mstore/nogrow 0.02 0.02 -9.1% PASS
total/micro/signextend/one 0.08 0.08 +0.4% PASS
total/micro/signextend/zero 0.19 0.18 -3.7% PASS
total/synth/ADD/b0 0.00 0.00 -1.0% PASS
total/synth/ADD/b1 0.00 0.00 +0.7% PASS
total/synth/ADDRESS/a0 0.22 0.22 +2.3% PASS
total/synth/ADDRESS/a1 0.15 0.15 +0.2% PASS
total/synth/AND/b0 0.00 0.00 +0.3% PASS
total/synth/AND/b1 0.00 0.00 -0.3% PASS
total/synth/BYTE/b0 0.00 0.00 +0.1% PASS
total/synth/BYTE/b1 0.00 0.00 +0.1% PASS
total/synth/CALLDATASIZE/a0 0.14 0.12 -9.8% PASS
total/synth/CALLDATASIZE/a1 0.07 0.07 +0.1% PASS
total/synth/CALLER/a0 0.24 0.22 -7.2% PASS
total/synth/CALLER/a1 0.22 0.26 +17.4% PASS
total/synth/CALLVALUE/a0 0.19 0.19 -0.2% PASS
total/synth/CALLVALUE/a1 0.28 0.30 +5.2% PASS
total/synth/CODESIZE/a0 0.12 0.13 +5.6% PASS
total/synth/CODESIZE/a1 0.13 0.12 -3.7% PASS
total/synth/DUP1/d0 0.00 0.00 -0.4% PASS
total/synth/DUP1/d1 0.00 0.00 -0.7% PASS
total/synth/DUP10/d0 0.00 0.00 +0.9% PASS
total/synth/DUP10/d1 0.00 0.00 -0.5% PASS
total/synth/DUP11/d0 0.00 0.00 +1.6% PASS
total/synth/DUP11/d1 0.00 0.00 +0.3% PASS
total/synth/DUP12/d0 0.00 0.00 -0.1% PASS
total/synth/DUP12/d1 0.00 0.00 -0.1% PASS
total/synth/DUP13/d0 0.00 0.00 +0.5% PASS
total/synth/DUP13/d1 0.00 0.00 -0.0% PASS
total/synth/DUP14/d0 0.00 0.00 -0.3% PASS
total/synth/DUP14/d1 0.00 0.00 -0.4% PASS
total/synth/DUP15/d0 0.00 0.00 +3.7% PASS
total/synth/DUP15/d1 0.00 0.00 -0.3% PASS
total/synth/DUP16/d0 0.00 0.00 -0.1% PASS
total/synth/DUP16/d1 0.00 0.00 +0.3% PASS
total/synth/DUP2/d0 0.00 0.00 +0.0% PASS
total/synth/DUP2/d1 0.00 0.00 +1.0% PASS
total/synth/DUP3/d0 0.00 0.00 +0.5% PASS
total/synth/DUP3/d1 0.00 0.00 +0.2% PASS
total/synth/DUP4/d0 0.00 0.00 +0.3% PASS
total/synth/DUP4/d1 0.00 0.00 -0.6% PASS
total/synth/DUP5/d0 0.00 0.00 +0.4% PASS
total/synth/DUP5/d1 0.00 0.00 +0.7% PASS
total/synth/DUP6/d0 0.00 0.00 -1.6% PASS
total/synth/DUP6/d1 0.00 0.00 +0.5% PASS
total/synth/DUP7/d0 0.00 0.00 +0.5% PASS
total/synth/DUP7/d1 0.00 0.00 -0.8% PASS
total/synth/DUP8/d0 0.00 0.00 -0.3% PASS
total/synth/DUP8/d1 0.00 0.00 -0.0% PASS
total/synth/DUP9/d0 0.00 0.00 +0.1% PASS
total/synth/DUP9/d1 0.00 0.00 +0.4% PASS
total/synth/EQ/b0 0.00 0.00 +0.4% PASS
total/synth/EQ/b1 0.00 0.00 -0.0% PASS
total/synth/GAS/a0 0.76 0.77 +0.2% PASS
total/synth/GAS/a1 0.93 0.93 +0.2% PASS
total/synth/GT/b0 0.00 0.00 +0.1% PASS
total/synth/GT/b1 0.00 0.00 +0.3% PASS
total/synth/ISZERO/u0 0.00 0.00 -7.0% PASS
total/synth/JUMPDEST/n0 0.00 0.00 -0.0% PASS
total/synth/LT/b0 0.00 0.00 -0.4% PASS
total/synth/LT/b1 0.00 0.00 +0.3% PASS
total/synth/MSIZE/a0 0.00 0.00 -1.8% PASS
total/synth/MSIZE/a1 0.00 0.00 -1.1% PASS
total/synth/MUL/b0 0.00 0.00 -1.2% PASS
total/synth/MUL/b1 0.00 0.00 +0.4% PASS
total/synth/NOT/u0 0.00 0.00 -4.5% PASS
total/synth/OR/b0 0.00 0.00 -0.9% PASS
total/synth/OR/b1 0.00 0.00 +0.3% PASS
total/synth/PC/a0 0.00 0.00 +0.2% PASS
total/synth/PC/a1 0.00 0.00 +0.2% PASS
total/synth/PUSH1/p0 0.00 0.00 +0.2% PASS
total/synth/PUSH1/p1 0.00 0.00 +0.5% PASS
total/synth/PUSH10/p0 0.00 0.00 -1.4% PASS
total/synth/PUSH10/p1 0.00 0.00 +2.3% PASS
total/synth/PUSH11/p0 0.00 0.00 +3.6% PASS
total/synth/PUSH11/p1 0.00 0.00 -8.4% PASS
total/synth/PUSH12/p0 0.00 0.00 -1.0% PASS
total/synth/PUSH12/p1 0.00 0.00 -3.5% PASS
total/synth/PUSH13/p0 0.00 0.00 -0.6% PASS
total/synth/PUSH13/p1 0.00 0.00 -2.2% PASS
total/synth/PUSH14/p0 0.00 0.00 -1.4% PASS
total/synth/PUSH14/p1 0.00 0.00 +3.7% PASS
total/synth/PUSH15/p0 0.00 0.00 -0.8% PASS
total/synth/PUSH15/p1 0.00 0.00 +2.2% PASS
total/synth/PUSH16/p0 0.00 0.00 -6.4% PASS
total/synth/PUSH16/p1 0.00 0.00 -0.8% PASS
total/synth/PUSH17/p0 0.00 0.00 +3.1% PASS
total/synth/PUSH17/p1 0.00 0.00 +2.7% PASS
total/synth/PUSH18/p0 0.00 0.00 +0.3% PASS
total/synth/PUSH18/p1 0.00 0.00 -0.4% PASS
total/synth/PUSH19/p0 0.00 0.00 +0.6% PASS
total/synth/PUSH19/p1 0.00 0.00 +0.3% PASS
total/synth/PUSH2/p0 0.00 0.00 +0.1% PASS
total/synth/PUSH2/p1 0.00 0.00 +1.4% PASS
total/synth/PUSH20/p0 0.00 0.00 -2.6% PASS
total/synth/PUSH20/p1 0.00 0.00 +4.3% PASS
total/synth/PUSH21/p0 0.00 0.00 -0.4% PASS
total/synth/PUSH21/p1 0.00 0.00 +1.7% PASS
total/synth/PUSH22/p0 1.67 1.92 +14.8% PASS
total/synth/PUSH22/p1 1.63 1.64 +0.2% PASS
total/synth/PUSH23/p0 1.68 1.75 +4.0% PASS
total/synth/PUSH23/p1 1.91 2.03 +6.1% PASS
total/synth/PUSH24/p0 1.20 1.21 +1.0% PASS
total/synth/PUSH24/p1 1.85 2.05 +11.3% PASS
total/synth/PUSH25/p0 1.66 1.81 +8.7% PASS
total/synth/PUSH25/p1 1.71 1.64 -4.5% PASS
total/synth/PUSH26/p0 1.75 1.75 -0.3% PASS
total/synth/PUSH26/p1 1.84 1.99 +8.4% PASS
total/synth/PUSH27/p0 1.20 1.22 +1.8% PASS
total/synth/PUSH27/p1 1.92 2.00 +4.1% PASS
total/synth/PUSH28/p0 1.74 1.82 +4.2% PASS
total/synth/PUSH28/p1 1.65 1.64 -0.6% PASS
total/synth/PUSH29/p0 1.69 1.79 +6.4% PASS
total/synth/PUSH29/p1 1.89 1.98 +5.0% PASS
total/synth/PUSH3/p0 0.00 0.00 +0.0% PASS
total/synth/PUSH3/p1 0.00 0.00 -2.8% PASS
total/synth/PUSH30/p0 1.28 1.29 +0.1% PASS
total/synth/PUSH30/p1 1.87 2.07 +10.6% PASS
total/synth/PUSH31/p0 1.88 1.77 -5.9% PASS
total/synth/PUSH31/p1 1.66 1.67 +0.1% PASS
total/synth/PUSH32/p0 1.66 1.84 +10.7% PASS
total/synth/PUSH32/p1 1.91 2.02 +5.7% PASS
total/synth/PUSH4/p0 0.00 0.00 -0.0% PASS
total/synth/PUSH4/p1 0.00 0.00 -0.4% PASS
total/synth/PUSH5/p0 0.00 0.00 +0.8% PASS
total/synth/PUSH5/p1 0.00 0.00 +3.1% PASS
total/synth/PUSH6/p0 0.00 0.00 +1.2% PASS
total/synth/PUSH6/p1 0.00 0.00 +0.4% PASS
total/synth/PUSH7/p0 0.00 0.00 -9.7% PASS
total/synth/PUSH7/p1 0.00 0.00 -2.6% PASS
total/synth/PUSH8/p0 0.00 0.00 +2.5% PASS
total/synth/PUSH8/p1 0.00 0.00 -1.4% PASS
total/synth/PUSH9/p0 0.00 0.00 -1.0% PASS
total/synth/PUSH9/p1 0.00 0.00 -0.2% PASS
total/synth/RETURNDATASIZE/a0 0.03 0.03 -0.0% PASS
total/synth/RETURNDATASIZE/a1 0.06 0.06 -1.5% PASS
total/synth/SAR/b0 0.00 0.00 -0.3% PASS
total/synth/SAR/b1 0.00 0.00 +0.0% PASS
total/synth/SGT/b0 0.00 0.00 -0.2% PASS
total/synth/SGT/b1 0.00 0.00 +0.0% PASS
total/synth/SHL/b0 0.00 0.00 -0.4% PASS
total/synth/SHL/b1 0.00 0.00 +0.2% PASS
total/synth/SHR/b0 0.00 0.00 +0.0% PASS
total/synth/SHR/b1 0.00 0.00 -0.3% PASS
total/synth/SIGNEXTEND/b0 0.00 0.00 +0.1% PASS
total/synth/SIGNEXTEND/b1 0.00 0.00 +2.0% PASS
total/synth/SLT/b0 0.00 0.00 -0.1% PASS
total/synth/SLT/b1 0.00 0.00 +1.1% PASS
total/synth/SUB/b0 0.00 0.00 -0.5% PASS
total/synth/SUB/b1 0.00 0.00 -0.4% PASS
total/synth/SWAP1/s0 0.00 0.00 +0.0% PASS
total/synth/SWAP10/s0 0.00 0.00 +0.3% PASS
total/synth/SWAP11/s0 0.00 0.00 +0.3% PASS
total/synth/SWAP12/s0 0.00 0.00 +0.9% PASS
total/synth/SWAP13/s0 0.00 0.00 -0.3% PASS
total/synth/SWAP14/s0 0.00 0.00 -0.2% PASS
total/synth/SWAP15/s0 0.00 0.00 -0.7% PASS
total/synth/SWAP16/s0 0.00 0.00 -0.3% PASS
total/synth/SWAP2/s0 0.00 0.00 -0.0% PASS
total/synth/SWAP3/s0 0.00 0.00 -3.2% PASS
total/synth/SWAP4/s0 0.00 0.00 +0.2% PASS
total/synth/SWAP5/s0 0.00 0.00 -0.4% PASS
total/synth/SWAP6/s0 0.00 0.00 -2.5% PASS
total/synth/SWAP7/s0 0.00 0.00 +0.3% PASS
total/synth/SWAP8/s0 0.00 0.00 -0.6% PASS
total/synth/SWAP9/s0 0.00 0.00 +0.5% PASS
total/synth/XOR/b0 0.00 0.00 +2.2% PASS
total/synth/XOR/b1 0.00 0.00 -0.5% PASS
total/synth/loop_v1 8.46 8.54 +1.0% PASS
total/synth/loop_v2 8.53 9.15 +7.3% PASS

Summary: 193 benchmarks, 0 regressions


Keep CFG topology for blocks whose entry stack is unresolved or dynamic-dispatch tainted, but prevent partial opcode facts from reaching memory-plan consumers. Make the facts builder own the fail-closed invariant and cover guaranteed-minimum, grouping, dead-store, and load-forwarding behavior.
Copilot AI review requested due to automatic review settings July 29, 2026 08:15
@abmcar
abmcar force-pushed the codex/fix-memory-plan-selector-dse branch from e82e7b2 to e670ea2 Compare July 29, 2026 08:15

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants