#include "PIC16InstrInfo.h"
#include "PIC16ISelLowering.h"
+#include "PIC16RegisterInfo.h"
#include "PIC16Subtarget.h"
#include "llvm/Target/TargetData.h"
#include "llvm/Target/TargetFrameInfo.h"
const TargetData DataLayout; // Calculates type size & alignment
PIC16InstrInfo InstrInfo;
PIC16TargetLowering TLInfo;
+
+ // PIC16 does not have any call stack frame, therefore not having
+ // any PIC16 specific FrameInfo class.
TargetFrameInfo FrameInfo;
-protected:
- virtual const TargetAsmInfo *createTargetAsmInfo() const;
-
public:
- PIC16TargetMachine(const Module &M, const std::string &FS);
-
- virtual const TargetFrameInfo *getFrameInfo() const
- { return &FrameInfo; }
- virtual const PIC16InstrInfo *getInstrInfo() const
- { return &InstrInfo; }
- virtual const TargetData *getTargetData() const
- { return &DataLayout; }
- virtual PIC16TargetLowering *getTargetLowering() const
- { return const_cast<PIC16TargetLowering*>(&TLInfo); }
- virtual const TargetRegisterInfo *getRegisterInfo() const
- { return &InstrInfo.getRegisterInfo(); }
-
- virtual bool addInstSelector(PassManagerBase &PM, bool Fast);
- virtual bool addPrologEpilogInserter(PassManagerBase &PM, bool Fast);
- virtual bool addPreEmitPass(PassManagerBase &PM, bool Fast);
- virtual bool addAssemblyEmitter(PassManagerBase &PM, bool Fast,
- std::ostream &Out);
-};
+ PIC16TargetMachine(const Target &T, const std::string &TT,
+ const std::string &FS, bool Cooper = false);
+
+ virtual const TargetFrameInfo *getFrameInfo() const { return &FrameInfo; }
+ virtual const PIC16InstrInfo *getInstrInfo() const { return &InstrInfo; }
+ virtual const TargetData *getTargetData() const { return &DataLayout;}
+ virtual const PIC16Subtarget *getSubtargetImpl() const { return &Subtarget; }
+
+ virtual const PIC16RegisterInfo *getRegisterInfo() const {
+ return &(InstrInfo.getRegisterInfo());
+ }
+
+ virtual PIC16TargetLowering *getTargetLowering() const {
+ return const_cast<PIC16TargetLowering*>(&TLInfo);
+ }
+
+ virtual bool addInstSelector(PassManagerBase &PM,
+ CodeGenOpt::Level OptLevel);
+ virtual bool addPreEmitPass(PassManagerBase &PM, CodeGenOpt::Level OptLevel);
+}; // PIC16TargetMachine.
+
} // end namespace llvm
#endif