summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorHeejin Ahn <aheejin@gmail.com>2018-11-18 11:58:47 +0000
committerHeejin Ahn <aheejin@gmail.com>2018-11-18 11:58:47 +0000
commite0f8b9bfc651221ab1a647082b9ec009d9295762 (patch)
tree5adad5959a78a84453200e1d0c55d9ea616b363e /llvm/lib
parent7a391ff918d7a68d476c2ea89243dc47b825900f (diff)
downloadbcm5719-llvm-e0f8b9bfc651221ab1a647082b9ec009d9295762.tar.gz
bcm5719-llvm-e0f8b9bfc651221ab1a647082b9ec009d9295762.zip
[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
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.cpp6
-rw-r--r--llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.h17
2 files changed, 23 insertions, 0 deletions
diff --git a/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.cpp b/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.cpp
index 24dd5238f71..390f367c297 100644
--- a/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.cpp
+++ b/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.cpp
@@ -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);
}
}
diff --git a/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.h b/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.h
index 68527542e3e..3f1c6e158b2 100644
--- a/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.h
+++ b/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.h
@@ -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
OpenPOWER on IntegriCloud