[Relax] Validate StructInfo of variable bindings#17332
Merged
Lunderberg merged 3 commits intoapache:mainfrom Sep 11, 2024
Merged
[Relax] Validate StructInfo of variable bindings#17332Lunderberg merged 3 commits intoapache:mainfrom
Lunderberg merged 3 commits intoapache:mainfrom
Conversation
Contributor
Author
|
This validation exposed a bug in The bug in |
In Relax, both the variable and the expression in a `VarBinding` may contain `StructInfo` annotations. Prior to this commit, these `StructInfo` annotations could be inconsistent, assigning an expression to a variable of incompatible type. This commit updates the Relax well-formed checker to verify that the `StructInfo` of Relax variables accurately describes their contents.
The `StructInfoLCA` determines the lowest common ancestor between two
`StructInfo` annotations. This is primarily used in Relax to
determine the appropriate `StructInfo` annotation for a `relax::If`
node, given the `StructInfo` of each branch. Prior to this commit,
when determining the LCA of two `PrimStructInfo` annotations, the
`StructInfoLCA` function only inspected the datatype of
`PrimStructInfo` annotations, and did not check for known values. For
example, the LCA of `R.Prim(value=T.int64(128))` and
`R.Prim(value=T.int64(64))` is `R.Prim("int64")`, but was incorrectly
determined as `R.Prim(value=T.int64(128))` by the `StructInfoLCA`
function.
This commit updates `StructInfoLCA` to inspect the known values of a
`PrimStructInfo`, as well as the datatype.
8b7d373 to
c4b980b
Compare
Contributor
Author
|
Rebased onto main to resolve conflicts in |
Member
|
cc @yongwww can you help to take a look |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
In Relax, both the variable and the expression in a
VarBindingmay containStructInfoannotations. Prior to this commit, theseStructInfoannotations could be inconsistent, assigning an expression to a variable of incompatible type.This commit updates the Relax well-formed checker to verify that the
StructInfoof Relax variables accurately describes their contents.