From 6c05d9135f13021622504d57309a559a60e8ae62 Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Fri, 1 Aug 2014 21:18:01 +0000 Subject: [PATCH] Add a non-const subtarget returning function to the target machine so that we can use it to get the old-style JIT out of the subtarget. This code should be removed when the old-style JIT is removed (imminently). llvm-svn: 214560 --- llvm/include/llvm/Target/TargetMachine.h | 1 + llvm/lib/Target/ARM/ARMTargetMachine.h | 3 ++- llvm/lib/Target/Mips/MipsTargetMachine.h | 7 ++++++- llvm/lib/Target/PowerPC/PPCTargetMachine.h | 3 ++- llvm/lib/Target/Sparc/SparcTargetMachine.h | 5 ++++- llvm/lib/Target/X86/X86TargetMachine.h | 3 ++- 6 files changed, 17 insertions(+), 5 deletions(-) diff --git a/llvm/include/llvm/Target/TargetMachine.h b/llvm/include/llvm/Target/TargetMachine.h index b263c57..d48f746 100644 --- a/llvm/include/llvm/Target/TargetMachine.h +++ b/llvm/include/llvm/Target/TargetMachine.h @@ -100,6 +100,7 @@ public: virtual const TargetSubtargetInfo *getSubtargetImpl() const { return nullptr; } + virtual TargetSubtargetInfo *getSubtargetImpl() { return nullptr; } mutable TargetOptions Options; diff --git a/llvm/lib/Target/ARM/ARMTargetMachine.h b/llvm/lib/Target/ARM/ARMTargetMachine.h index b72b1df..9a89f8b 100644 --- a/llvm/lib/Target/ARM/ARMTargetMachine.h +++ b/llvm/lib/Target/ARM/ARMTargetMachine.h @@ -33,6 +33,7 @@ public: bool isLittle); const ARMSubtarget *getSubtargetImpl() const override { return &Subtarget; } + ARMSubtarget *getSubtargetImpl() override { return &Subtarget; } const ARMBaseRegisterInfo *getRegisterInfo() const override { return getSubtargetImpl()->getRegisterInfo(); } @@ -54,7 +55,7 @@ public: const DataLayout *getDataLayout() const override { return getSubtargetImpl()->getDataLayout(); } - ARMJITInfo *getJITInfo() override { return Subtarget.getJITInfo(); } + ARMJITInfo *getJITInfo() override { return getSubtargetImpl()->getJITInfo(); } /// \brief Register ARM analysis passes with a pass manager. void addAnalysisPasses(PassManagerBase &PM) override; diff --git a/llvm/lib/Target/Mips/MipsTargetMachine.h b/llvm/lib/Target/Mips/MipsTargetMachine.h index bcf411f..1651457 100644 --- a/llvm/lib/Target/Mips/MipsTargetMachine.h +++ b/llvm/lib/Target/Mips/MipsTargetMachine.h @@ -50,13 +50,18 @@ public: return Subtarget; return &DefaultSubtarget; } + MipsSubtarget *getSubtargetImpl() override { + if (Subtarget) + return Subtarget; + return &DefaultSubtarget; + } const InstrItineraryData *getInstrItineraryData() const override { return Subtarget->inMips16Mode() ? nullptr : &getSubtargetImpl()->getInstrItineraryData(); } MipsJITInfo *getJITInfo() override { - return Subtarget->getJITInfo(); + return getSubtargetImpl()->getJITInfo(); } const MipsRegisterInfo *getRegisterInfo() const override { return getSubtargetImpl()->getRegisterInfo(); diff --git a/llvm/lib/Target/PowerPC/PPCTargetMachine.h b/llvm/lib/Target/PowerPC/PPCTargetMachine.h index 4c7029c..e11b468 100644 --- a/llvm/lib/Target/PowerPC/PPCTargetMachine.h +++ b/llvm/lib/Target/PowerPC/PPCTargetMachine.h @@ -38,7 +38,7 @@ public: const PPCFrameLowering *getFrameLowering() const override { return getSubtargetImpl()->getFrameLowering(); } - PPCJITInfo *getJITInfo() override { return Subtarget.getJITInfo(); } + PPCJITInfo *getJITInfo() override { return getSubtargetImpl()->getJITInfo(); } const PPCTargetLowering *getTargetLowering() const override { return getSubtargetImpl()->getTargetLowering(); } @@ -53,6 +53,7 @@ public: return getSubtargetImpl()->getDataLayout(); } const PPCSubtarget *getSubtargetImpl() const override { return &Subtarget; } + PPCSubtarget *getSubtargetImpl() override { return &Subtarget; } const InstrItineraryData *getInstrItineraryData() const override { return &getSubtargetImpl()->getInstrItineraryData(); } diff --git a/llvm/lib/Target/Sparc/SparcTargetMachine.h b/llvm/lib/Target/Sparc/SparcTargetMachine.h index 03b5137..d5fb272 100644 --- a/llvm/lib/Target/Sparc/SparcTargetMachine.h +++ b/llvm/lib/Target/Sparc/SparcTargetMachine.h @@ -35,6 +35,7 @@ public: return getSubtargetImpl()->getFrameLowering(); } const SparcSubtarget *getSubtargetImpl() const override { return &Subtarget; } + SparcSubtarget *getSubtargetImpl() override { return &Subtarget; } const SparcRegisterInfo *getRegisterInfo() const override { return getSubtargetImpl()->getRegisterInfo(); } @@ -44,7 +45,9 @@ public: const SparcSelectionDAGInfo *getSelectionDAGInfo() const override { return getSubtargetImpl()->getSelectionDAGInfo(); } - SparcJITInfo *getJITInfo() override { return Subtarget.getJITInfo(); } + SparcJITInfo *getJITInfo() override { + return getSubtargetImpl()->getJITInfo(); + } const DataLayout *getDataLayout() const override { return getSubtargetImpl()->getDataLayout(); } diff --git a/llvm/lib/Target/X86/X86TargetMachine.h b/llvm/lib/Target/X86/X86TargetMachine.h index 41d5157..9fccbe2 100644 --- a/llvm/lib/Target/X86/X86TargetMachine.h +++ b/llvm/lib/Target/X86/X86TargetMachine.h @@ -41,8 +41,9 @@ public: const TargetFrameLowering *getFrameLowering() const override { return getSubtargetImpl()->getFrameLowering(); } - X86JITInfo *getJITInfo() override { return Subtarget.getJITInfo(); } + X86JITInfo *getJITInfo() override { return getSubtargetImpl()->getJITInfo(); } const X86Subtarget *getSubtargetImpl() const override { return &Subtarget; } + X86Subtarget *getSubtargetImpl() override { return &Subtarget; } const X86TargetLowering *getTargetLowering() const override { return getSubtargetImpl()->getTargetLowering(); } -- 2.7.4