diff options
Diffstat (limited to 'src/ir/global-utils.h')
-rw-r--r-- | src/ir/global-utils.h | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/ir/global-utils.h b/src/ir/global-utils.h index 26aec7790..ca00047a0 100644 --- a/src/ir/global-utils.h +++ b/src/ir/global-utils.h @@ -53,20 +53,18 @@ getGlobalInitializedToImport(Module& wasm, Name module, Name base) { return ret; } -inline bool canInitializeGlobal(Expression* curr) { +inline bool canInitializeGlobal(Expression* curr, FeatureSet features) { if (auto* tuple = curr->dynCast<TupleMake>()) { for (auto* op : tuple->operands) { - if (!canInitializeGlobal(op)) { + if (!canInitializeGlobal(op, features)) { return false; } } return true; } - if (Properties::isSingleConstantExpression(curr) || curr->is<GlobalGet>() || - curr->is<RttCanon>() || curr->is<RttSub>() || curr->is<StructNew>() || - curr->is<ArrayNew>() || curr->is<ArrayInit>() || curr->is<I31New>()) { + if (Properties::isValidInConstantExpression(curr, features)) { for (auto* child : ChildIterator(curr)) { - if (!canInitializeGlobal(child)) { + if (!canInitializeGlobal(child, features)) { return false; } } |