summaryrefslogtreecommitdiff
path: root/src/support/debug.cpp
diff options
context:
space:
mode:
authorThomas Lively <tlively@google.com>2024-10-24 13:48:56 -0700
committerGitHub <noreply@github.com>2024-10-24 13:48:56 -0700
commitde421db1a556f579507e4445af27763c89dd8391 (patch)
tree3fceb462b3646372d58388c3fe2f4068f543401c /src/support/debug.cpp
parentdcc70bbfb16c2f8fce29dad94d80d1b78123655f (diff)
downloadbinaryen-de421db1a556f579507e4445af27763c89dd8391.tar.gz
binaryen-de421db1a556f579507e4445af27763c89dd8391.tar.bz2
binaryen-de421db1a556f579507e4445af27763c89dd8391.zip
Fix TypeMerging bug with indirectly reachable public types (#7031)
TypeMerging works by representing the type definition graph as a partitioned DFA and then refining the partitions to find mergeable types. #7023 was due to a bug where the DFA included edges from public types to their children, but did not necessarily include corresponding states for those children. One way to fix the bug would have been to traverse the type graph, finding all reachable public types and creating DFA states for them, but that might be expensive in cases where there are large graphs of public types. Instead, fix the problem by removing the edges from public types to their children entirely. Types reachable from public types are also public and therefore are not eligible to be merged, so these edges were never necessary for correctness. Fixes #7023.
Diffstat (limited to 'src/support/debug.cpp')
0 files changed, 0 insertions, 0 deletions