summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJF Bastien <jfb@google.com>2015-10-30 16:41:21 +0000
committerJF Bastien <jfb@google.com>2015-10-30 16:41:21 +0000
commit5789a69435290339026e174a8769211544cfeb16 (patch)
treeabca4eb41375b1cb46531b2b9c31ee126b717148
parentb2978da715b4c7e62d39e1a5f9d92d3dca4998ec (diff)
downloadbcm5719-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.cpp19
-rw-r--r--llvm/test/CodeGen/WebAssembly/import.ll4
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)
OpenPOWER on IntegriCloud