WebAssemblyTargetMachine.h revision 287506
1186545Srwatson// WebAssemblyTargetMachine.h - Define TargetMachine for WebAssembly -*- C++ -*- 2191273Srwatson// 3186545Srwatson// The LLVM Compiler Infrastructure 4186545Srwatson// 5186545Srwatson// This file is distributed under the University of Illinois Open Source 6186545Srwatson// License. See LICENSE.TXT for details. 7186545Srwatson// 8186545Srwatson//===----------------------------------------------------------------------===// 9186545Srwatson/// 10186545Srwatson/// \file 11186545Srwatson/// \brief This file declares the WebAssembly-specific subclass of 12186545Srwatson/// TargetMachine. 13186545Srwatson/// 14186545Srwatson//===----------------------------------------------------------------------===// 15186545Srwatson 16186545Srwatson#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYTARGETMACHINE_H 17186545Srwatson#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYTARGETMACHINE_H 18186545Srwatson 19186545Srwatson#include "WebAssemblySubtarget.h" 20186545Srwatson#include "llvm/Target/TargetMachine.h" 21186545Srwatson 22186545Srwatsonnamespace llvm { 23186545Srwatson 24186545Srwatsonclass WebAssemblyTargetMachine final : public LLVMTargetMachine { 25186545Srwatson std::unique_ptr<TargetLoweringObjectFile> TLOF; 26186545Srwatson mutable StringMap<std::unique_ptr<WebAssemblySubtarget>> SubtargetMap; 27186545Srwatson 28186545Srwatsonpublic: 29186545Srwatson WebAssemblyTargetMachine(const Target &T, const Triple &TT, StringRef CPU, 30186545Srwatson StringRef FS, const TargetOptions &Options, 31186545Srwatson Reloc::Model RM, CodeModel::Model CM, 32186545Srwatson CodeGenOpt::Level OL); 33186545Srwatson 34186545Srwatson ~WebAssemblyTargetMachine() override; 35186545Srwatson const WebAssemblySubtarget * 36187214Srwatson getSubtargetImpl(const Function &F) const override; 37186545Srwatson 38187214Srwatson // Pass Pipeline Configuration 39186545Srwatson TargetPassConfig *createPassConfig(PassManagerBase &PM) override; 40187214Srwatson 41186545Srwatson TargetLoweringObjectFile *getObjFileLowering() const override { 42186545Srwatson return TLOF.get(); 43186545Srwatson } 44186545Srwatson 45186545Srwatson /// \brief Get the TargetIRAnalysis for this target. 46186545Srwatson TargetIRAnalysis getTargetIRAnalysis() override; 47186545Srwatson}; 48186545Srwatson 49186545Srwatson} // end namespace llvm 50186545Srwatson 51186545Srwatson#endif 52186545Srwatson