Skip to content
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

Add missing subsume uses in egraph rules #7879

Merged
merged 2 commits into from
Feb 6, 2024

Conversation

elliottt
Copy link
Member

@elliottt elliottt commented Feb 6, 2024

I took a quick pass over the egraph rules to look for cases that violate our new guidelines about when subsume is required. There were a few cases where subsume was needed, and though I believe those instances were benign I think they're worth adding to make sure we're following the spirit of our new guidelines.

I've also added some clarifying text about constants in the text of guideline 2, to make it more obvious that cases where we discard constants are okay without subsume.

There were a few rules that dropped value references from the LHS
without using subsume. I think they were probably benign as they
produced constant results, but this change is in the spirit of our
revised guidelines for egraph rules.
@elliottt elliottt requested a review from a team as a code owner February 6, 2024 19:34
@elliottt elliottt requested review from abrown and fitzgen and removed request for a team February 6, 2024 19:34
Copy link
Member

@fitzgen fitzgen left a comment

Choose a reason for hiding this comment

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

Thanks for auditing our rules!

@fitzgen fitzgen added this pull request to the merge queue Feb 6, 2024
Merged via the queue into bytecodealliance:main with commit 7464bbc Feb 6, 2024
19 checks passed
elliottt added a commit to elliottt/wasmtime that referenced this pull request Feb 7, 2024
* Fix a few egraph rules that needed `subsume`

There were a few rules that dropped value references from the LHS
without using subsume. I think they were probably benign as they
produced constant results, but this change is in the spirit of our
revised guidelines for egraph rules.

* Augment egraph rule guideline 2 to talk about constants
elliottt added a commit that referenced this pull request Feb 7, 2024
* Guard recursion in `will_simplify_with_ireduce` (#7882)

Add a test to expose issues with unbounded recursion through `iadd`
during egraph rewrites, and bound the recursion of
`will_simplify_with_ireduce`.

Fixes #7874

Co-authored-by: Nick Fitzgerald <fitzgen@gmail.com>

* Cranelift: Use a fixpoint loop to compute the best value for each eclass (#7859)

* Cranelift: Use a fixpoint loop to compute the best value for each eclass

Fixes #7857

* Remove fixpoint loop early-continue optimization

* Add document describing optimization rule invariants

* Make select optimizations use subsume

* Remove invalid debug assert

* Remove now-unused methods

* Add commutative adds to cost tests

* Add missing subsume uses in egraph rules (#7879)

* Fix a few egraph rules that needed `subsume`

There were a few rules that dropped value references from the LHS
without using subsume. I think they were probably benign as they
produced constant results, but this change is in the spirit of our
revised guidelines for egraph rules.

* Augment egraph rule guideline 2 to talk about constants

* Update release notes

---------

Co-authored-by: Nick Fitzgerald <fitzgen@gmail.com>
elliottt added a commit that referenced this pull request Feb 7, 2024
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