diff options
author | Alon Zakai <azakai@google.com> | 2021-03-24 08:02:59 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-24 08:02:59 -0700 |
commit | 182a1fbc41becdfdfbfcf02a2d67798fb087e7c1 (patch) | |
tree | edf27b5cea41fb67fa23b2510ffe62c9d6104174 /src/ir/literal-utils.h | |
parent | 6aa04fa17a5bf820c8bc3a7801ede7f57a9138e7 (diff) | |
download | binaryen-182a1fbc41becdfdfbfcf02a2d67798fb087e7c1.tar.gz binaryen-182a1fbc41becdfdfbfcf02a2d67798fb087e7c1.tar.bz2 binaryen-182a1fbc41becdfdfbfcf02a2d67798fb087e7c1.zip |
[Wasm GC] Fix canMakeZero on tuples (#3721)
Diffstat (limited to 'src/ir/literal-utils.h')
-rw-r--r-- | src/ir/literal-utils.h | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/ir/literal-utils.h b/src/ir/literal-utils.h index fbe5b3716..498085796 100644 --- a/src/ir/literal-utils.h +++ b/src/ir/literal-utils.h @@ -32,9 +32,17 @@ inline Expression* makeFromInt32(int32_t x, Type type, Module& wasm) { } inline bool canMakeZero(Type type) { - // We can make a "zero" - a 0, or a null, or a trivial rtt, etc. - for pretty - // much anything except a non-nullable reference type. - return !type.isRef() || type.isNullable(); + if (type.isRef() && !type.isNullable()) { + return false; + } + if (type.isTuple()) { + for (auto t : type) { + if (!canMakeZero(t)) { + return false; + } + } + } + return true; } inline Expression* makeZero(Type type, Module& wasm) { |