Do not recollect types in ReorderTypes #8195
Open
+28
−11
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.
ReorderTypes previously collected the module types and their counts,
even though it already extends GlobalTypeRewriter, which also collects
the module types in its constructor. Not only did this duplicate work,
it was also a subtle source of bugs because ReorderTypes and
GlobalTypeRewriter collected types slightly differently. ReorderTypes
collected the binary types and GlobalTypeRewriter collected the used IR
types. This could result in different types being collected for the same
multivalue control flow signatures, causing an assertion failure when
a type was seemingly missing from the collected info.
Fix the problem and make the pass more efficient by simply not
collecting the types two separate times.