diff options
| author | Sam Clegg <sbc@chromium.org> | 2019-06-07 06:00:46 +0000 |
|---|---|---|
| committer | Sam Clegg <sbc@chromium.org> | 2019-06-07 06:00:46 +0000 |
| commit | fd54fa5d72d5cbe076419ad31b36c19ddfc1ed33 (patch) | |
| tree | ed01ef3c43267aa681660575320bc57d808f8cd2 /lld/wasm/Writer.cpp | |
| parent | 50f61af3f304a03f10d9ecb0828829f0a72d0099 (diff) | |
| download | bcm5719-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.cpp | 3 |
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)); |

