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.
UniqueRecGroups compares the shapes of rec groups after considering how
types will be written in the final binary for a particular feature set.
Previously its interface dealt in arbitrary vectors of types, but it
turns out that it could sometimes be subtly incorrect to pass vectors of
types that were not already all in the same rec group.
The problem is that the base case for the RecGroupShape utility that
hashes rec group shapes is either hashing the index in the group for
recursive references to types in the group or the type ID for
non-recursive references. When the type vector contains types from
different rec groups, non-recursive references across groups can
inadvertently appear and be hashed as recursive references.
Fix the problem for UniqueRecGroups by changing the interface to take
RecGroups rather than arbitrary vectors of heap types.
A regression test for this bug will be included in an upcoming PR. It
cannot be included here because it depends on running a pass that does
not exist yet.