diff options
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp')
-rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp index 204d97cbdd4..40eed593f07 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp @@ -84,8 +84,14 @@ void WebAssemblyAsmPrinter::EmitEndOfAsmFile(Module &M) { SmallVector<MVT, 4> Results; SmallVector<MVT, 4> Params; ComputeSignatureVTs(F, TM, Params, Results); - getTargetStreamer()->emitIndirectFunctionType(getSymbol(&F), Params, - Results); + MCSymbolWasm *Sym = cast<MCSymbolWasm>(getSymbol(&F)); + getTargetStreamer()->emitIndirectFunctionType(Sym, Params, Results); + + if (F.hasFnAttribute("wasm-import-module")) { + StringRef Name = F.getFnAttribute("wasm-import-module") + .getValueAsString(); + getTargetStreamer()->emitImportModule(Sym, Name); + } } } for (const auto &G : M.globals()) { |