From 71d5a2540a98c81f5bcaeb48805e0e2881f530ef Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Sun, 16 Apr 2017 16:01:22 +0000 Subject: Vendor import of llvm trunk r300422: https://llvm.org/svn/llvm-project/llvm/trunk@300422 --- include/llvm/CodeGen/MachineModuleInfoImpls.h | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'include/llvm/CodeGen/MachineModuleInfoImpls.h') diff --git a/include/llvm/CodeGen/MachineModuleInfoImpls.h b/include/llvm/CodeGen/MachineModuleInfoImpls.h index f9fa6999073f..f28a79c5b5cc 100644 --- a/include/llvm/CodeGen/MachineModuleInfoImpls.h +++ b/include/llvm/CodeGen/MachineModuleInfoImpls.h @@ -15,7 +15,9 @@ #ifndef LLVM_CODEGEN_MACHINEMODULEINFOIMPLS_H #define LLVM_CODEGEN_MACHINEMODULEINFOIMPLS_H +#include "llvm/CodeGen/ValueTypes.h" #include "llvm/CodeGen/MachineModuleInfo.h" +#include "llvm/Support/Wasm.h" namespace llvm { class MCSymbol; @@ -75,6 +77,33 @@ public: SymbolListTy GetGVStubList() { return getSortedStubs(GVStubs); } }; +/// MachineModuleInfoWasm - This is a MachineModuleInfoImpl implementation +/// for Wasm targets. +class MachineModuleInfoWasm : public MachineModuleInfoImpl { + /// WebAssembly global variables defined by CodeGen. + std::vector Globals; + + /// The WebAssembly global variable which is the stack pointer. + unsigned StackPointerGlobal; + + virtual void anchor(); // Out of line virtual method. +public: + MachineModuleInfoWasm(const MachineModuleInfo &) + : StackPointerGlobal(-1U) {} + + void addGlobal(const wasm::Global &G) { Globals.push_back(G); } + const std::vector &getGlobals() const { return Globals; } + + bool hasStackPointerGlobal() const { + return StackPointerGlobal != -1U; + } + unsigned getStackPointerGlobal() const { + assert(hasStackPointerGlobal() && "Stack ptr global hasn't been set"); + return StackPointerGlobal; + } + void setStackPointerGlobal(unsigned Global) { StackPointerGlobal = Global; } +}; + } // end namespace llvm #endif -- cgit v1.2.3