diff options
Diffstat (limited to 'lib/Target/WebAssembly/WebAssemblyTargetMachine.h')
| -rw-r--r-- | lib/Target/WebAssembly/WebAssemblyTargetMachine.h | 51 | 
1 files changed, 51 insertions, 0 deletions
diff --git a/lib/Target/WebAssembly/WebAssemblyTargetMachine.h b/lib/Target/WebAssembly/WebAssemblyTargetMachine.h new file mode 100644 index 000000000000..3226edcdc614 --- /dev/null +++ b/lib/Target/WebAssembly/WebAssemblyTargetMachine.h @@ -0,0 +1,51 @@ +// WebAssemblyTargetMachine.h - Define TargetMachine for WebAssembly -*- C++ -*- +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// \brief This file declares the WebAssembly-specific subclass of +/// TargetMachine. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYTARGETMACHINE_H +#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYTARGETMACHINE_H + +#include "WebAssemblySubtarget.h" +#include "llvm/Target/TargetMachine.h" + +namespace llvm { + +class WebAssemblyTargetMachine final : public LLVMTargetMachine { +  std::unique_ptr<TargetLoweringObjectFile> TLOF; +  mutable StringMap<std::unique_ptr<WebAssemblySubtarget>> SubtargetMap; + +public: +  WebAssemblyTargetMachine(const Target &T, const Triple &TT, StringRef CPU, +                           StringRef FS, const TargetOptions &Options, +                           Reloc::Model RM, CodeModel::Model CM, +                           CodeGenOpt::Level OL); + +  ~WebAssemblyTargetMachine() override; +  const WebAssemblySubtarget * +  getSubtargetImpl(const Function &F) const override; + +  // Pass Pipeline Configuration +  TargetPassConfig *createPassConfig(PassManagerBase &PM) override; + +  TargetLoweringObjectFile *getObjFileLowering() const override { +    return TLOF.get(); +  } + +  /// \brief Get the TargetIRAnalysis for this target. +  TargetIRAnalysis getTargetIRAnalysis() override; +}; + +} // end namespace llvm + +#endif  | 
