Skip to content

feat: add global value numbering pass#37

Merged
arnoox merged 4 commits intomainfrom
pr-f3/gvn
Mar 28, 2026
Merged

feat: add global value numbering pass#37
arnoox merged 4 commits intomainfrom
pr-f3/gvn

Conversation

@arnoox
Copy link
Copy Markdown
Owner

@arnoox arnoox commented Mar 27, 2026

Summary

  • Adds gvn as a new post-lowering optimizer pass
  • Extends local CSE across basic block boundaries via dominator-tree traversal: a pure computation available in a dominating block is reused in dominated blocks instead of recomputed
  • Runs after local_cse so GVN only handles residual cross-block redundancies

Pipeline position

... → local_cse → gvn → dead_instrs → branch_fold → dead_instrs → ...

Test plan

  • cargo test -p herkos-core --lib — 214 tests pass (6 new gvn tests)
  • cargo clippy — clean
  • cargo fmt --check

Stack

This is PR F3 of 4 in the optimizer split. Stacked on PR F2 (pr-f2/local-cse#36).

PR Pass Status
F1 branch_fold #35
F2 local_cse #36
F3 (this) gvn
F4 licm pending

🤖 Generated with Claude Code

Adds `gvn` as a new post-lowering optimizer pass. Extends local CSE
across basic block boundaries using dominator-tree traversal: a pure
computation available in a dominating block is reused in dominated
blocks instead of being recomputed. Runs after local_cse so GVN handles
only residual cross-block redundancies.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@arnoox arnoox changed the base branch from pr-f2/local-cse to main March 27, 2026 09:36
@arnoox arnoox merged commit b9eedc0 into main Mar 28, 2026
1 check passed
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.

1 participant