summaryrefslogtreecommitdiff
path: root/src/passes/RemoveUnusedModuleElements.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/passes/RemoveUnusedModuleElements.cpp')
-rw-r--r--src/passes/RemoveUnusedModuleElements.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/passes/RemoveUnusedModuleElements.cpp b/src/passes/RemoveUnusedModuleElements.cpp
index 6cbb001b1..05e80af0d 100644
--- a/src/passes/RemoveUnusedModuleElements.cpp
+++ b/src/passes/RemoveUnusedModuleElements.cpp
@@ -162,7 +162,13 @@ struct RemoveUnusedModuleElements : public Pass {
std::vector<ModuleElement> roots;
// Module start is a root.
if (module->start.is()) {
- roots.emplace_back(ModuleElementKind::Function, module->start);
+ auto startFunction = module->getFunction(module->start);
+ // Can be skipped if the start function is empty.
+ if (startFunction->body->is<Nop>()) {
+ module->start.clear();
+ } else {
+ roots.emplace_back(ModuleElementKind::Function, module->start);
+ }
}
// Exports are roots.
bool exportsMemory = false;