Home | History | Annotate | Download | only in MSP430
      1 //===-- MSP430TargetMachine.h - Define TargetMachine for MSP430 -*- C++ -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 //
     10 // This file declares the MSP430 specific subclass of TargetMachine.
     11 //
     12 //===----------------------------------------------------------------------===//
     13 
     14 
     15 #ifndef LLVM_TARGET_MSP430_TARGETMACHINE_H
     16 #define LLVM_TARGET_MSP430_TARGETMACHINE_H
     17 
     18 #include "MSP430Subtarget.h"
     19 #include "llvm/Target/TargetFrameLowering.h"
     20 #include "llvm/Target/TargetMachine.h"
     21 
     22 namespace llvm {
     23 
     24 /// MSP430TargetMachine
     25 ///
     26 class MSP430TargetMachine : public LLVMTargetMachine {
     27   MSP430Subtarget        Subtarget;
     28 
     29 public:
     30   MSP430TargetMachine(const Target &T, StringRef TT,
     31                       StringRef CPU, StringRef FS, const TargetOptions &Options,
     32                       Reloc::Model RM, CodeModel::Model CM,
     33                       CodeGenOpt::Level OL);
     34 
     35   const TargetFrameLowering *getFrameLowering() const override {
     36     return getSubtargetImpl()->getFrameLowering();
     37   }
     38   const MSP430InstrInfo *getInstrInfo() const override {
     39     return getSubtargetImpl()->getInstrInfo();
     40   }
     41   const DataLayout *getDataLayout() const override {
     42     return getSubtargetImpl()->getDataLayout();
     43   }
     44   const MSP430Subtarget *getSubtargetImpl() const override {
     45     return &Subtarget;
     46   }
     47   const TargetRegisterInfo *getRegisterInfo() const override {
     48     return getSubtargetImpl()->getRegisterInfo();
     49   }
     50   const MSP430TargetLowering *getTargetLowering() const override {
     51     return getSubtargetImpl()->getTargetLowering();
     52   }
     53   const MSP430SelectionDAGInfo *getSelectionDAGInfo() const override {
     54     return getSubtargetImpl()->getSelectionDAGInfo();
     55   }
     56   TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
     57 }; // MSP430TargetMachine.
     58 
     59 } // end namespace llvm
     60 
     61 #endif // LLVM_TARGET_MSP430_TARGETMACHINE_H
     62