forked from OSchip/llvm-project
[WebAssembly] Add null streamer support
Summary: Now `llc -filetype=null` works. Reviewers: eush Subscribers: dschuff, jgravelle-google, sbc100, sunfish, llvm-commits Differential Revision: https://reviews.llvm.org/D54660 llvm-svn: 347155
This commit is contained in:
parent
7a391ff918
commit
e0f8b9bfc6
|
@ -90,6 +90,10 @@ static MCTargetStreamer *createAsmTargetStreamer(MCStreamer &S,
|
|||
return new WebAssemblyTargetAsmStreamer(S, OS);
|
||||
}
|
||||
|
||||
static MCTargetStreamer *createNullTargetStreamer(MCStreamer &S) {
|
||||
return new WebAssemblyTargetNullStreamer(S);
|
||||
}
|
||||
|
||||
// Force static initialization.
|
||||
extern "C" void LLVMInitializeWebAssemblyTargetMC() {
|
||||
for (Target *T :
|
||||
|
@ -120,6 +124,8 @@ extern "C" void LLVMInitializeWebAssemblyTargetMC() {
|
|||
createObjectTargetStreamer);
|
||||
// Register the asm target streamer.
|
||||
TargetRegistry::RegisterAsmTargetStreamer(*T, createAsmTargetStreamer);
|
||||
// Register the null target streamer.
|
||||
TargetRegistry::RegisterNullTargetStreamer(*T, createNullTargetStreamer);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -88,6 +88,23 @@ public:
|
|||
void emitImportModule(MCSymbolWasm *Sym, StringRef ModuleName) override;
|
||||
};
|
||||
|
||||
/// This part is for null output
|
||||
class WebAssemblyTargetNullStreamer final : public WebAssemblyTargetStreamer {
|
||||
public:
|
||||
explicit WebAssemblyTargetNullStreamer(MCStreamer &S)
|
||||
: WebAssemblyTargetStreamer(S) {}
|
||||
|
||||
void emitParam(MCSymbol *Symbol, ArrayRef<MVT> Types) override {}
|
||||
void emitResult(MCSymbol *Symbol, ArrayRef<MVT> Types) override {}
|
||||
void emitLocal(ArrayRef<MVT> Types) override {}
|
||||
void emitEndFunc() override {}
|
||||
void emitIndirectFunctionType(MCSymbolWasm *Symbol) override {}
|
||||
void emitIndIdx(const MCExpr *Value) override {}
|
||||
void emitGlobalType(MCSymbolWasm *Sym) override {}
|
||||
void emitEventType(MCSymbolWasm *Sym) override {}
|
||||
void emitImportModule(MCSymbolWasm *Sym, StringRef ModuleName) override {}
|
||||
};
|
||||
|
||||
} // end namespace llvm
|
||||
|
||||
#endif
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
; RUN: llc < %s -O0 -filetype=null -exception-model=wasm -mattr=+exception-handling
|
||||
; RUN: llc < %s -O0 -filetype=asm -asm-verbose=false -exception-model=wasm -mattr=+exception-handling | FileCheck %s
|
||||
|
||||
target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
|
||||
target triple = "wasm32-unknown-unknown"
|
||||
|
||||
declare void @llvm.wasm.throw(i32, i8*)
|
||||
declare void @g()
|
||||
|
||||
define i32 @test(i8* %p) {
|
||||
%n = alloca i32
|
||||
call void @llvm.wasm.throw(i32 0, i8* %p)
|
||||
call void @g()
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
; CHECK-DAG: .globaltype
|
||||
; CHECK-DAG: .eventtype
|
||||
; CHECK-DAG: .functype
|
Loading…
Reference in New Issue