diff options
author | Evan Cheng <evan.cheng@apple.com> | 2006-03-13 23:20:37 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2006-03-13 23:20:37 +0000 |
commit | c4c6257c1a154279bf10e9498d46d6c1793dbaa7 (patch) | |
tree | 82eef3bf2df210e48dfb0aad717dc0649936e7db /lib/Target/IA64 | |
parent | e617b085fe20e3fd6ab21d0a3943140c5f1c9ff7 (diff) | |
download | external_llvm-c4c6257c1a154279bf10e9498d46d6c1793dbaa7.zip external_llvm-c4c6257c1a154279bf10e9498d46d6c1793dbaa7.tar.gz external_llvm-c4c6257c1a154279bf10e9498d46d6c1793dbaa7.tar.bz2 |
Added getTargetLowering() to TargetMachine. Refactored targets to support this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26742 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/IA64')
-rw-r--r-- | lib/Target/IA64/IA64.h | 8 | ||||
-rw-r--r-- | lib/Target/IA64/IA64AsmPrinter.cpp | 3 | ||||
-rw-r--r-- | lib/Target/IA64/IA64Bundling.cpp | 6 | ||||
-rw-r--r-- | lib/Target/IA64/IA64ISelDAGToDAG.cpp | 7 | ||||
-rw-r--r-- | lib/Target/IA64/IA64TargetMachine.cpp | 3 | ||||
-rw-r--r-- | lib/Target/IA64/IA64TargetMachine.h | 11 |
6 files changed, 22 insertions, 16 deletions
diff --git a/lib/Target/IA64/IA64.h b/lib/Target/IA64/IA64.h index af3ce6d1..f8cfbf1 100644 --- a/lib/Target/IA64/IA64.h +++ b/lib/Target/IA64/IA64.h @@ -18,26 +18,26 @@ namespace llvm { -class TargetMachine; +class IA64TargetMachine; class FunctionPass; class IntrinsicLowering; /// createIA64DAGToDAGInstructionSelector - This pass converts an LLVM /// function into IA64 machine code in a sane, DAG->DAG transform. /// -FunctionPass *createIA64DAGToDAGInstructionSelector(TargetMachine &TM); +FunctionPass *createIA64DAGToDAGInstructionSelector(IA64TargetMachine &TM); /// createIA64BundlingPass - This pass adds stop bits and bundles /// instructions. /// -FunctionPass *createIA64BundlingPass(TargetMachine &TM); +FunctionPass *createIA64BundlingPass(IA64TargetMachine &TM); /// createIA64CodePrinterPass - Returns a pass that prints the IA64 /// assembly code for a MachineFunction to the given output stream, /// using the given target machine description. This should work /// regardless of whether the function is in SSA form. /// -FunctionPass *createIA64CodePrinterPass(std::ostream &o,TargetMachine &tm); +FunctionPass *createIA64CodePrinterPass(std::ostream &o, IA64TargetMachine &tm); } // End llvm namespace diff --git a/lib/Target/IA64/IA64AsmPrinter.cpp b/lib/Target/IA64/IA64AsmPrinter.cpp index 09d388b..2cd1561 100644 --- a/lib/Target/IA64/IA64AsmPrinter.cpp +++ b/lib/Target/IA64/IA64AsmPrinter.cpp @@ -374,7 +374,8 @@ bool IA64AsmPrinter::doFinalization(Module &M) { /// assembly code for a MachineFunction to the given output stream, using /// the given target machine description. /// -FunctionPass *llvm::createIA64CodePrinterPass(std::ostream &o,TargetMachine &tm){ +FunctionPass *llvm::createIA64CodePrinterPass(std::ostream &o, + IA64TargetMachine &tm) { return new IA64AsmPrinter(o, tm); } diff --git a/lib/Target/IA64/IA64Bundling.cpp b/lib/Target/IA64/IA64Bundling.cpp index 2f3d238..11f0276 100644 --- a/lib/Target/IA64/IA64Bundling.cpp +++ b/lib/Target/IA64/IA64Bundling.cpp @@ -37,9 +37,9 @@ namespace { /// Target machine description which we query for reg. names, data /// layout, etc. /// - TargetMachine &TM; + IA64TargetMachine &TM; - IA64BundlingPass(TargetMachine &tm) : TM(tm) { } + IA64BundlingPass(IA64TargetMachine &tm) : TM(tm) { } virtual const char *getPassName() const { return "IA64 (Itanium) Bundling Pass"; @@ -64,7 +64,7 @@ namespace { /// createIA64BundlingPass - Returns a pass that adds STOP (;;) instructions /// and arranges the result into bundles. /// -FunctionPass *llvm::createIA64BundlingPass(TargetMachine &tm) { +FunctionPass *llvm::createIA64BundlingPass(IA64TargetMachine &tm) { return new IA64BundlingPass(tm); } diff --git a/lib/Target/IA64/IA64ISelDAGToDAG.cpp b/lib/Target/IA64/IA64ISelDAGToDAG.cpp index c904934..9ce3ea6 100644 --- a/lib/Target/IA64/IA64ISelDAGToDAG.cpp +++ b/lib/Target/IA64/IA64ISelDAGToDAG.cpp @@ -42,8 +42,8 @@ namespace { IA64TargetLowering IA64Lowering; unsigned GlobalBaseReg; public: - IA64DAGToDAGISel(TargetMachine &TM) - : SelectionDAGISel(IA64Lowering), IA64Lowering(TM) {} + IA64DAGToDAGISel(IA64TargetMachine &TM) + : SelectionDAGISel(IA64Lowering), IA64Lowering(*TM.getTargetLowering()) {} virtual bool runOnFunction(Function &Fn) { // Make sure we re-emit a set of the global base reg if necessary @@ -621,7 +621,8 @@ void IA64DAGToDAGISel::Select(SDOperand &Result, SDOperand Op) { /// createIA64DAGToDAGInstructionSelector - This pass converts a legalized DAG /// into an IA64-specific DAG, ready for instruction scheduling. /// -FunctionPass *llvm::createIA64DAGToDAGInstructionSelector(TargetMachine &TM) { +FunctionPass +*llvm::createIA64DAGToDAGInstructionSelector(IA64TargetMachine &TM) { return new IA64DAGToDAGISel(TM); } diff --git a/lib/Target/IA64/IA64TargetMachine.cpp b/lib/Target/IA64/IA64TargetMachine.cpp index 79377c5..9757b99 100644 --- a/lib/Target/IA64/IA64TargetMachine.cpp +++ b/lib/Target/IA64/IA64TargetMachine.cpp @@ -79,7 +79,8 @@ unsigned IA64TargetMachine::getModuleMatchQuality(const Module &M) { IA64TargetMachine::IA64TargetMachine(const Module &M, IntrinsicLowering *IL, const std::string &FS) : TargetMachine("IA64", IL, true), - FrameInfo(TargetFrameInfo::StackGrowsDown, 16, 0) { // FIXME? check this stuff + FrameInfo(TargetFrameInfo::StackGrowsDown, 16, 0), + TLInfo(*this) { // FIXME? check this stuff } // addPassesToEmitFile - We currently use all of the same passes as the JIT diff --git a/lib/Target/IA64/IA64TargetMachine.h b/lib/Target/IA64/IA64TargetMachine.h index 127bdf1..fb633bc 100644 --- a/lib/Target/IA64/IA64TargetMachine.h +++ b/lib/Target/IA64/IA64TargetMachine.h @@ -18,20 +18,23 @@ #include "llvm/Target/TargetFrameInfo.h" #include "llvm/PassManager.h" #include "IA64InstrInfo.h" +#include "IA64ISelLowering.h" namespace llvm { class IntrinsicLowering; class IA64TargetMachine : public TargetMachine { - IA64InstrInfo InstrInfo; - TargetFrameInfo FrameInfo; + IA64InstrInfo InstrInfo; + TargetFrameInfo FrameInfo; //IA64JITInfo JITInfo; + IA64TargetLowering TLInfo; public: IA64TargetMachine(const Module &M, IntrinsicLowering *IL, const std::string &FS); - virtual const IA64InstrInfo *getInstrInfo() const { return &InstrInfo; } - virtual const TargetFrameInfo *getFrameInfo() const { return &FrameInfo; } + virtual const IA64InstrInfo *getInstrInfo() const { return &InstrInfo; } + virtual const TargetFrameInfo *getFrameInfo() const { return &FrameInfo; } + virtual IA64TargetLowering *getTargetLowering() { return &TLInfo; } virtual const MRegisterInfo *getRegisterInfo() const { return &InstrInfo.getRegisterInfo(); } |