Line data Source code
1 : //===-- AVRTargetMachine.h - Define TargetMachine for AVR -------*- 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 AVR specific subclass of TargetMachine.
11 : //
12 : //===----------------------------------------------------------------------===//
13 :
14 : #ifndef LLVM_AVR_TARGET_MACHINE_H
15 : #define LLVM_AVR_TARGET_MACHINE_H
16 :
17 : #include "llvm/IR/DataLayout.h"
18 : #include "llvm/Target/TargetMachine.h"
19 :
20 : #include "AVRFrameLowering.h"
21 : #include "AVRISelLowering.h"
22 : #include "AVRInstrInfo.h"
23 : #include "AVRSelectionDAGInfo.h"
24 : #include "AVRSubtarget.h"
25 :
26 : namespace llvm {
27 :
28 : /// A generic AVR implementation.
29 : class AVRTargetMachine : public LLVMTargetMachine {
30 : public:
31 : AVRTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
32 : StringRef FS, const TargetOptions &Options,
33 : Optional<Reloc::Model> RM,
34 : Optional<CodeModel::Model> CM,
35 : CodeGenOpt::Level OL, bool JIT);
36 :
37 : const AVRSubtarget *getSubtargetImpl() const;
38 : const AVRSubtarget *getSubtargetImpl(const Function &) const override;
39 :
40 1301 : TargetLoweringObjectFile *getObjFileLowering() const override {
41 1301 : return this->TLOF.get();
42 : }
43 :
44 : TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
45 :
46 0 : bool isMachineVerifierClean() const override {
47 0 : return false;
48 : }
49 :
50 : private:
51 : std::unique_ptr<TargetLoweringObjectFile> TLOF;
52 : AVRSubtarget SubTarget;
53 : };
54 :
55 : } // end namespace llvm
56 :
57 : #endif // LLVM_AVR_TARGET_MACHINE_H
|