diff options
author | Alon Zakai <azakai@google.com> | 2024-06-10 16:15:46 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-10 16:15:46 -0700 |
commit | 3d0e687447be426c4157dbe9c6d2626b147f85bf (patch) | |
tree | 916317adbbaef8b49bd8281725b04b0c4b35cd72 /src/passes/TupleOptimization.cpp | |
parent | 0a1a59af573414a20fe457fd77b732729aa92fb2 (diff) | |
download | binaryen-3d0e687447be426c4157dbe9c6d2626b147f85bf.tar.gz binaryen-3d0e687447be426c4157dbe9c6d2626b147f85bf.tar.bz2 binaryen-3d0e687447be426c4157dbe9c6d2626b147f85bf.zip |
[Strings] Keep public and private types separate in StringLowering (#6642)
We need StringLowering to modify even public types, as it must replace every
single stringref with externref, even if that modifies the ABI. To achieve that
we told it that all string-using types were private, which let TypeUpdater update
them, but the problem is that it moves all private types to a new single
rec group, which meant public and private types ended up in the same group.
As a result, a single public type would make it all public, preventing optimizations
and breaking things as in #6630 #6640.
Ideally TypeUpdater would modify public types while keeping them in the same
rec groups, but this may be a very specific issue for StringLowering, and that
might be a lot of work. Instead, just make StringLowering handle public types of
functions in a manual way, which is simple and should handle all cases that
matter in practice, at least in J2Wasm.
Diffstat (limited to 'src/passes/TupleOptimization.cpp')
0 files changed, 0 insertions, 0 deletions