summaryrefslogtreecommitdiff
path: root/src/ir/global-utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ir/global-utils.h')
-rw-r--r--src/ir/global-utils.h10
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;
}
}