cfallin requested alexcrichton for a review on PR #3561.
cfallin opened PR #3561 from aarch64-isle-rule-explicit-ordering
to main
:
In this comment I noted a potential subtle issue with the way that a few rules were written that is fine now but could cause some unexpected pain when we get around to verification.
Specifically, a set of rules of the form
(rule (A (B _)) (C)) (rule (A _) (D))
should, under any reasonable "default" rule ordering scheme, fire the more specific rule
(A (B _))
when applicable, in preference to the second "fallback" rule.However, for future verification-specific applications of ISLE, we want to ensure the property that a rule's meaning/validity is not dependent on being overridden by more specific rules. In other words, if a rule specifies a rewrite, that rewrite should always be correct; and choosing a more specific rule can give a better compilation (better generated code) but should not be necessary for correctness.
This is an admittedly under-document part of the language, though in the pending #3560 I added a note about rule ordering being a heuristic that should hopefully make this slightly clearer. Ultimately I want to have tests that choose non-default rule orderings and differentially fuzz in order to be sure that we're following this principle; and of course once we're actually doing verification, we'll catch issues like this upfront.
Apologies for the subtle footgun here and hopefully the reasoning is clear enough :-)
<!--
Please ensure that the following steps are all taken care of before submitting
the PR.
[ ] This has been discussed in issue #..., or if not, please tell us why
here.[ ] A short description of what this does, why it is needed; if the
description becomes long, the matter should probably be discussed in an issue
first.[ ] This PR contains test cases, if meaningful.
- [ ] A reviewer from the core maintainer team has been assigned for this PR.
If you don't know who could review this, please indicate so. The list of
suggested reviewers on the right can help you.Please ensure all communication adheres to the code of conduct.
-->
cfallin edited PR #3561 from aarch64-isle-rule-explicit-ordering
to main
:
In this comment I noted a potential subtle issue with the way that a few rules were written that is fine now but could cause some unexpected pain when we get around to verification.
Specifically, a set of rules of the form
(rule (A (B _)) (C)) (rule (A _) (D))
should, under any reasonable "default" rule ordering scheme, fire the more specific rule
(A (B _))
when applicable, in preference to the second "fallback" rule.However, for future verification-specific applications of ISLE, we want to ensure the property that a rule's meaning/validity is not dependent on being overridden by more specific rules. In other words, if a rule specifies a rewrite, that rewrite should always be correct; and choosing a more specific rule can give a better compilation (better generated code) but should not be necessary for correctness.
This is an admittedly under-documented part of the language, though in the pending #3560 I added a note about rule ordering being a heuristic that should hopefully make this slightly clearer. Ultimately I want to have tests that choose non-default rule orderings and differentially fuzz in order to be sure that we're following this principle; and of course once we're actually doing verification, we'll catch issues like this upfront.
Apologies for the subtle footgun here and hopefully the reasoning is clear enough :-)
<!--
Please ensure that the following steps are all taken care of before submitting
the PR.
[ ] This has been discussed in issue #..., or if not, please tell us why
here.[ ] A short description of what this does, why it is needed; if the
description becomes long, the matter should probably be discussed in an issue
first.[ ] This PR contains test cases, if meaningful.
- [ ] A reviewer from the core maintainer team has been assigned for this PR.
If you don't know who could review this, please indicate so. The list of
suggested reviewers on the right can help you.Please ensure all communication adheres to the code of conduct.
-->
cfallin updated PR #3561 from aarch64-isle-rule-explicit-ordering
to main
.
alexcrichton submitted PR review.
cfallin merged PR #3561.
Last updated: Dec 23 2024 at 13:07 UTC