forked from OSchip/llvm-project
[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
This commit is contained in:
parent
b2978da715
commit
5789a69435
|
@ -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());
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue