diff options
author | Thomas Lively <tlively@google.com> | 2024-09-05 17:09:52 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-06 00:09:52 +0000 |
commit | 509d18323cc9513b513bebdc0443e3fd416db692 (patch) | |
tree | 0aba96ce21fb19700da88f9ab09dd0f02f097249 /test/float_ops.cpp | |
parent | 5903ea9bae2d02f31080bed8ea5b71846fd80733 (diff) | |
download | binaryen-509d18323cc9513b513bebdc0443e3fd416db692.tar.gz binaryen-509d18323cc9513b513bebdc0443e3fd416db692.tar.bz2 binaryen-509d18323cc9513b513bebdc0443e3fd416db692.zip |
Avoid conflicts with public rec groups in MinimizeRecGroups (#6911)
As with all type optimizations, MinimizeRecGroups only changes private
types, which are the only types that are safe to modify. However, it is
important for correctness that MinimimizeRecGroups maintain separate
type identities for all types, whether public or private, to ensure that
casts that should differentiate two types cannot change behavior.
Previously the pass worked exclusively on private types, so there was
nothing preventing it from constructing a minimial rec group that
happened to have the same shape, and therefore type identity, as a
public rec group. #6886 exhibits a fuzzer test case where this happens
and changes the behavior of the program.
Fix the bug by recording all public rec group shapes and resolve
conflicts with these shapes by updating the shape of the conflicting
non-public type.
Fixes #6886.
Diffstat (limited to 'test/float_ops.cpp')
0 files changed, 0 insertions, 0 deletions