summaryrefslogtreecommitdiffstats
path: root/lld/wasm/Writer.cpp
diff options
context:
space:
mode:
authorSam Clegg <sbc@chromium.org>2019-06-07 06:00:46 +0000
committerSam Clegg <sbc@chromium.org>2019-06-07 06:00:46 +0000
commitfd54fa5d72d5cbe076419ad31b36c19ddfc1ed33 (patch)
treeed01ef3c43267aa681660575320bc57d808f8cd2 /lld/wasm/Writer.cpp
parent50f61af3f304a03f10d9ecb0828829f0a72d0099 (diff)
downloadbcm5719-llvm-fd54fa5d72d5cbe076419ad31b36c19ddfc1ed33.tar.gz
bcm5719-llvm-fd54fa5d72d5cbe076419ad31b36c19ddfc1ed33.zip
[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
Diffstat (limited to 'lld/wasm/Writer.cpp')
-rw-r--r--lld/wasm/Writer.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/lld/wasm/Writer.cpp b/lld/wasm/Writer.cpp
index 0aa1180cb2b..43a8c8de637 100644
--- a/lld/wasm/Writer.cpp
+++ b/lld/wasm/Writer.cpp
@@ -701,6 +701,9 @@ void Writer::calculateInitFunctions() {
const WasmLinkingData &L = File->getWasmObj()->linkingData();
for (const WasmInitFunc &F : L.InitFunctions) {
FunctionSymbol *Sym = File->getFunctionSymbol(F.Symbol);
+ // comdat exclusions can cause init functions be discarded.
+ if (Sym->isDiscarded())
+ continue;
assert(Sym->isLive());
if (*Sym->Signature != WasmSignature{{}, {}})
error("invalid signature for init func: " + toString(*Sym));
OpenPOWER on IntegriCloud