diff options
author | Quentin Colombet <qcolombet@apple.com> | 2017-08-04 20:15:46 +0000 |
---|---|---|
committer | Quentin Colombet <qcolombet@apple.com> | 2017-08-04 20:15:46 +0000 |
commit | f646c276318e12f9622740fc77908abcf1fe8ab8 (patch) | |
tree | 14ccc7c04bfc34da20048b79ededeabacd420f5e /lib/Target/AArch64/AArch64Subtarget.cpp | |
parent | 3fbb046df6177dcdb3598b7c8259aa556ebfa04d (diff) |
[GlobalISel] Remove the GISelAccessor API.
Its sole purpose was to avoid spreading around ifdefs related to
building global-isel. Since r309990, GlobalISel is not optional anymore,
thus, we can get rid of this mechanism all together.
NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310115 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/AArch64/AArch64Subtarget.cpp')
-rw-r--r-- | lib/Target/AArch64/AArch64Subtarget.cpp | 57 |
1 files changed, 11 insertions, 46 deletions
diff --git a/lib/Target/AArch64/AArch64Subtarget.cpp b/lib/Target/AArch64/AArch64Subtarget.cpp index 4fb4991da69..5d0482918e0 100644 --- a/lib/Target/AArch64/AArch64Subtarget.cpp +++ b/lib/Target/AArch64/AArch64Subtarget.cpp @@ -21,7 +21,6 @@ #include "AArch64CallLowering.h" #include "AArch64LegalizerInfo.h" #include "AArch64RegisterBankInfo.h" -#include "llvm/CodeGen/GlobalISel/GISelAccessor.h" #include "llvm/CodeGen/GlobalISel/IRTranslator.h" #include "llvm/CodeGen/GlobalISel/InstructionSelect.h" #include "llvm/CodeGen/GlobalISel/Legalizer.h" @@ -141,76 +140,42 @@ void AArch64Subtarget::initializeProperties() { } } -namespace { - -struct AArch64GISelActualAccessor : public GISelAccessor { - std::unique_ptr<CallLowering> CallLoweringInfo; - std::unique_ptr<InstructionSelector> InstSelector; - std::unique_ptr<LegalizerInfo> Legalizer; - std::unique_ptr<RegisterBankInfo> RegBankInfo; - - const CallLowering *getCallLowering() const override { - return CallLoweringInfo.get(); - } - - const InstructionSelector *getInstructionSelector() const override { - return InstSelector.get(); - } - - const LegalizerInfo *getLegalizerInfo() const override { - return Legalizer.get(); - } - - const RegisterBankInfo *getRegBankInfo() const override { - return RegBankInfo.get(); - } -}; - -} // end anonymous namespace - AArch64Subtarget::AArch64Subtarget(const Triple &TT, const std::string &CPU, const std::string &FS, const TargetMachine &TM, bool LittleEndian) : AArch64GenSubtargetInfo(TT, CPU, FS), - ReserveX18(TT.isOSDarwin() || TT.isOSWindows()), - IsLittle(LittleEndian), TargetTriple(TT), FrameLowering(), + ReserveX18(TT.isOSDarwin() || TT.isOSWindows()), IsLittle(LittleEndian), + TargetTriple(TT), FrameLowering(), InstrInfo(initializeSubtargetDependencies(FS, CPU)), TSInfo(), - TLInfo(TM, *this), GISel() { - AArch64GISelActualAccessor *AArch64GISel = new AArch64GISelActualAccessor(); - AArch64GISel->CallLoweringInfo.reset( - new AArch64CallLowering(*getTargetLowering())); - AArch64GISel->Legalizer.reset(new AArch64LegalizerInfo()); + TLInfo(TM, *this) { + CallLoweringInfo.reset(new AArch64CallLowering(*getTargetLowering())); + Legalizer.reset(new AArch64LegalizerInfo()); auto *RBI = new AArch64RegisterBankInfo(*getRegisterInfo()); // FIXME: At this point, we can't rely on Subtarget having RBI. // It's awkward to mix passing RBI and the Subtarget; should we pass // TII/TRI as well? - AArch64GISel->InstSelector.reset(createAArch64InstructionSelector( + InstSelector.reset(createAArch64InstructionSelector( *static_cast<const AArch64TargetMachine *>(&TM), *this, *RBI)); - AArch64GISel->RegBankInfo.reset(RBI); - setGISelAccessor(*AArch64GISel); + RegBankInfo.reset(RBI); } const CallLowering *AArch64Subtarget::getCallLowering() const { - assert(GISel && "Access to GlobalISel APIs not set"); - return GISel->getCallLowering(); + return CallLoweringInfo.get(); } const InstructionSelector *AArch64Subtarget::getInstructionSelector() const { - assert(GISel && "Access to GlobalISel APIs not set"); - return GISel->getInstructionSelector(); + return InstSelector.get(); } const LegalizerInfo *AArch64Subtarget::getLegalizerInfo() const { - assert(GISel && "Access to GlobalISel APIs not set"); - return GISel->getLegalizerInfo(); + return Legalizer.get(); } const RegisterBankInfo *AArch64Subtarget::getRegBankInfo() const { - assert(GISel && "Access to GlobalISel APIs not set"); - return GISel->getRegBankInfo(); + return RegBankInfo.get(); } /// Find the target operand flags that describe how a global value should be |