summaryrefslogtreecommitdiff
path: root/test/lit/passes/unsubtyping-casts.wast
Commit message (Collapse)AuthorAgeFilesLines
* Add an "unsubtyping" optimization (#5982)Thomas Lively2023-10-101-0/+452
Add a new pass that analyzes the module to find the minimal subtyping relation that is necessary to maintain the validity and semantics of the program and rewrites the types to use this minimal relation. Besides eliminating references to otherwise-unused intermediate types, this optimization should unlock significant additional optimizing power in other type optimizations that are constrained by having to maintain supertype validity, since after this new optimization there are fewer and more general supertypes. The analysis works by visiting each expression and module element to collect the subtypings that are required to maintain its validity, then, using that as a starting point, iteratively adding new subtypings required by type definitions and casts until reaching a fixed point.