diff options
| author | JF Bastien <jfb@google.com> | 2015-10-30 16:41:21 +0000 |
|---|---|---|
| committer | JF Bastien <jfb@google.com> | 2015-10-30 16:41:21 +0000 |
| commit | 5789a69435290339026e174a8769211544cfeb16 (patch) | |
| tree | abca4eb41375b1cb46531b2b9c31ee126b717148 | |
| parent | b2978da715b4c7e62d39e1a5f9d92d3dca4998ec (diff) | |
| download | bcm5719-llvm-5789a69435290339026e174a8769211544cfeb16.tar.gz bcm5719-llvm-5789a69435290339026e174a8769211544cfeb16.zip | |
[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
llvm-svn: 251714
| -rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp | 19 | ||||
| -rw-r--r-- | llvm/test/CodeGen/WebAssembly/import.ll | 4 |
2 files changed, 13 insertions, 10 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp index 7ee452efe1d..59c1ff381a0 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp +++ b/llvm/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/llvm/test/CodeGen/WebAssembly/import.ll b/llvm/test/CodeGen/WebAssembly/import.ll index d1dca7fa8bb..6f1f8e0c3ae 100644 --- a/llvm/test/CodeGen/WebAssembly/import.ll +++ b/llvm/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) |

