diff options
| author | Wouter van Oortmerssen <aardappel@gmail.com> | 2018-11-19 17:10:36 +0000 |
|---|---|---|
| committer | Wouter van Oortmerssen <aardappel@gmail.com> | 2018-11-19 17:10:36 +0000 |
| commit | 49482f824a0d92f8f97121aaa6e82f409ff23d58 (patch) | |
| tree | b6619cb3dddaca091bf225cbeadfc1fa224c0904 /llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.h | |
| parent | b25adf5edba0bfb487828600f4294702e695fdba (diff) | |
| download | bcm5719-llvm-49482f824a0d92f8f97121aaa6e82f409ff23d58.tar.gz bcm5719-llvm-49482f824a0d92f8f97121aaa6e82f409ff23d58.zip | |
[WebAssembly] replaced .param/.result by .functype
Summary:
This makes it easier/cleaner to generate a single signature from
this directive. Also:
- Adds the symbol name, such that we don't depend on the location
of this directive anymore.
- Actually constructs the signature in the assembler, and make the
assembler own it.
- Refactor the use of MVT vs ValType in the streamer and assembler
to require less conversions overall.
- Changed 700 or so tests to use it.
Reviewers: sbc100, dschuff
Subscribers: jgravelle-google, eraman, aheejin, sunfish, jfb, llvm-commits
Differential Revision: https://reviews.llvm.org/D54652
llvm-svn: 347228
Diffstat (limited to 'llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.h')
| -rw-r--r-- | llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.h | 34 |
1 files changed, 12 insertions, 22 deletions
diff --git a/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.h b/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.h index 3f1c6e158b2..0416aa434d9 100644 --- a/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.h +++ b/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.h @@ -31,16 +31,12 @@ class WebAssemblyTargetStreamer : public MCTargetStreamer { public: explicit WebAssemblyTargetStreamer(MCStreamer &S); - /// .param - virtual void emitParam(MCSymbol *Symbol, ArrayRef<MVT> Types) = 0; - /// .result - virtual void emitResult(MCSymbol *Symbol, ArrayRef<MVT> Types) = 0; /// .local - virtual void emitLocal(ArrayRef<MVT> Types) = 0; + virtual void emitLocal(ArrayRef<wasm::ValType> Types) = 0; /// .endfunc virtual void emitEndFunc() = 0; /// .functype - virtual void emitIndirectFunctionType(MCSymbolWasm *Symbol) = 0; + virtual void emitFunctionType(MCSymbolWasm *Symbol) = 0; /// .indidx virtual void emitIndIdx(const MCExpr *Value) = 0; /// .globaltype @@ -61,11 +57,9 @@ class WebAssemblyTargetAsmStreamer final : public WebAssemblyTargetStreamer { public: WebAssemblyTargetAsmStreamer(MCStreamer &S, formatted_raw_ostream &OS); - void emitParam(MCSymbol *Symbol, ArrayRef<MVT> Types) override; - void emitResult(MCSymbol *Symbol, ArrayRef<MVT> Types) override; - void emitLocal(ArrayRef<MVT> Types) override; + void emitLocal(ArrayRef<wasm::ValType> Types) override; void emitEndFunc() override; - void emitIndirectFunctionType(MCSymbolWasm *Symbol) override; + void emitFunctionType(MCSymbolWasm *Symbol) override; void emitIndIdx(const MCExpr *Value) override; void emitGlobalType(MCSymbolWasm *Sym) override; void emitEventType(MCSymbolWasm *Sym) override; @@ -77,11 +71,9 @@ class WebAssemblyTargetWasmStreamer final : public WebAssemblyTargetStreamer { public: explicit WebAssemblyTargetWasmStreamer(MCStreamer &S); - void emitParam(MCSymbol *Symbol, ArrayRef<MVT> Types) override; - void emitResult(MCSymbol *Symbol, ArrayRef<MVT> Types) override; - void emitLocal(ArrayRef<MVT> Types) override; + void emitLocal(ArrayRef<wasm::ValType> Types) override; void emitEndFunc() override; - void emitIndirectFunctionType(MCSymbolWasm *Symbol) override; + void emitFunctionType(MCSymbolWasm *Symbol) override; void emitIndIdx(const MCExpr *Value) override; void emitGlobalType(MCSymbolWasm *Sym) override; void emitEventType(MCSymbolWasm *Sym) override; @@ -94,15 +86,13 @@ 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 emitLocal(ArrayRef<wasm::ValType>) 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 {} + void emitFunctionType(MCSymbolWasm *) override {} + void emitIndIdx(const MCExpr *) override {} + void emitGlobalType(MCSymbolWasm *) override {} + void emitEventType(MCSymbolWasm *) override {} + void emitImportModule(MCSymbolWasm *, StringRef) override {} }; } // end namespace llvm |

