diff options
Diffstat (limited to 'src/ir/module-utils.cpp')
-rw-r--r-- | src/ir/module-utils.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/ir/module-utils.cpp b/src/ir/module-utils.cpp index 482753b87..0cdff0955 100644 --- a/src/ir/module-utils.cpp +++ b/src/ir/module-utils.cpp @@ -15,6 +15,7 @@ */ #include "module-utils.h" +#include "ir/intrinsics.h" #include "support/insert_ordered.h" #include "support/topological_sort.h" @@ -245,8 +246,13 @@ InsertOrderedSet<HeapType> getPublicTypeSet(Module& wasm) { notePublic(global->type.getHeapType()); } }); - ModuleUtils::iterImportedFunctions( - wasm, [&](Function* func) { notePublic(func->type); }); + ModuleUtils::iterImportedFunctions(wasm, [&](Function* func) { + // We can ignore call.without.effects, which is implemented as an import but + // functionally is a call within the module. + if (!Intrinsics(wasm).isCallWithoutEffects(func)) { + notePublic(func->type); + } + }); for (auto& ex : wasm.exports) { switch (ex->kind) { case ExternalKind::Function: { |