From 677d6a3a87f954487a82abc644688c4c49be64f3 Mon Sep 17 00:00:00 2001 From: JF Bastien Date: Fri, 30 Oct 2015 16:41:21 +0000 Subject: [PATCH] [WebAssembly] Fix import statement Summary: Imports should be generated like (param i32 f32...) not (param i32) (param f32) ... Author: binji Reviewers: jfb Subscribers: jfb, dschuff git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251714 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../WebAssembly/WebAssemblyAsmPrinter.cpp | 19 ++++++++++--------- test/CodeGen/WebAssembly/import.ll | 4 +++- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp b/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp index 7ee452efe1d..59c1ff381a0 100644 --- a/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp +++ b/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp @@ -339,24 +339,25 @@ void WebAssemblyAsmPrinter::EmitInstruction(const MachineInstr *MI) { } void WebAssemblyAsmPrinter::EmitEndOfAsmFile(Module &M) { - SmallString<128> Str; - raw_svector_ostream OS(Str); + SmallString<128> Str; + raw_svector_ostream OS(Str); for (const Function &F : M) if (F.isDeclarationForLinker()) { assert(F.hasName() && "imported functions must have a name"); if (F.getName().startswith("llvm.")) - continue; + continue; if (Str.empty()) - OS << "\t.imports\n"; + OS << "\t.imports\n"; Type *Rt = F.getReturnType(); - OS << "\t.import " << toSymbol(F.getName()) << " \"\" \"" << F.getName() - << "\""; + OS << "\t.import " << toSymbol(F.getName()) << " \"\" \"" << F.getName() + << "\" (param"; for (const Argument &A : F.args()) - OS << " (param " << toString(A.getType()) << ')'; + OS << ' ' << toString(A.getType()); + OS << ')'; if (!Rt->isVoidTy()) - OS << " (result " << toString(Rt) << ')'; + OS << " (result " << toString(Rt) << ')'; OS << '\n'; - } + } OutStreamer->EmitRawText(OS.str()); } diff --git a/test/CodeGen/WebAssembly/import.ll b/test/CodeGen/WebAssembly/import.ll index d1dca7fa8bb..6f1f8e0c3ae 100644 --- a/test/CodeGen/WebAssembly/import.ll +++ b/test/CodeGen/WebAssembly/import.ll @@ -15,7 +15,9 @@ define void @f(i32 %a, float %b) { ; CHECK-LABEL: .imports ; CHECK-NEXT: .import $printi "" "printi" (param i32) (result i32) ; CHECK-NEXT: .import $printf "" "printf" (param f32) (result f32) -; CHECK-NEXT: .import $printv "" "printv" +; CHECK-NEXT: .import $printv "" "printv" (param) +; CHECK-NEXT: .import $add2 "" "add2" (param i32 i32) (result i32) declare i32 @printi(i32) declare float @printf(float) declare void @printv() +declare i32 @add2(i32, i32) -- 2.34.1