[WebAssembly] Fix for discarded init functions
When a function is excluded via comdat we shouldn't add it to the
final list of init functions.
Differential Revision: https://reviews.llvm.org/D62983
llvm-svn: 362769
diff --git a/lld/wasm/MarkLive.cpp b/lld/wasm/MarkLive.cpp
index a53c472..b3dce23 100644
--- a/lld/wasm/MarkLive.cpp
+++ b/lld/wasm/MarkLive.cpp
@@ -52,8 +52,11 @@
if (Sym == WasmSym::CallCtors) {
for (const ObjFile *Obj : Symtab->ObjectFiles) {
const WasmLinkingData &L = Obj->getWasmObj()->linkingData();
- for (const WasmInitFunc &F : L.InitFunctions)
- Enqueue(Obj->getFunctionSymbol(F.Symbol));
+ for (const WasmInitFunc &F : L.InitFunctions) {
+ auto* InitSym = Obj->getFunctionSymbol(F.Symbol);
+ if (!InitSym->isDiscarded())
+ Enqueue(InitSym);
+ }
}
}
};