blob: f9af9a7e26f6969daa8ac1a21774a75fe4336e3e [file] [log] [blame]
//===-- MSP430TargetMachine.h - Define TargetMachine for MSP430 -*- C++ -*-===//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
// This file declares the MSP430 specific subclass of TargetMachine.
#include "MSP430Subtarget.h"
#include "llvm/Target/TargetMachine.h"
#include <optional>
namespace llvm {
class StringRef;
/// MSP430TargetMachine
class MSP430TargetMachine : public LLVMTargetMachine {
std::unique_ptr<TargetLoweringObjectFile> TLOF;
MSP430Subtarget Subtarget;
MSP430TargetMachine(const Target &T, const Triple &TT, StringRef CPU,
StringRef FS, const TargetOptions &Options,
std::optional<Reloc::Model> RM,
std::optional<CodeModel::Model> CM, CodeGenOptLevel OL,
bool JIT);
~MSP430TargetMachine() override;
const MSP430Subtarget *getSubtargetImpl(const Function &F) const override {
return &Subtarget;
TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
TargetLoweringObjectFile *getObjFileLowering() const override {
return TLOF.get();
MachineFunctionInfo *
createMachineFunctionInfo(BumpPtrAllocator &Allocator, const Function &F,
const TargetSubtargetInfo *STI) const override;
}; // MSP430TargetMachine.
} // end namespace llvm