[llvm] r310115 - [GlobalISel] Remove the GISelAccessor API.
Bill Seurer via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 7 13:37:44 PDT 2017
Starting with this revision I see the following failure when running a
check-all if -DBUILD_SHARED_LIBS=ON is used on cmake:
[36/56] Linking CXX executable unittests/Target/AArch64/AArch64Tests
FAILED: unittests/Target/AArch64/AArch64Tests
: && /home/seurer/gcc/install/gcc-7.1.0/bin/g++ -fPIC
-fvisibility-inlines-hidden -Werror=date-time -std=c++11 -Wall -W
-Wno-unused-parameter -Wwrite-strings -Wcast-qual
-Wno-missing-field-initializers -pedantic -Wno-long-long
-Wno-maybe-uninitialized -Wdelete-non-virtual-dtor -Wno-comment
-ffunction-sections -fdata-sections -O3
-L/home/seurer/gcc/install/gcc-7.1.0/lib64 -Wl,-allow-shlib-undefined
-Wl,-O3 -Wl,--gc-sections
unittests/Target/AArch64/CMakeFiles/AArch64Tests.dir/InstSizes.cpp.o -o
unittests/Target/AArch64/AArch64Tests
lib/libLLVMAArch64CodeGen.so.6.0.0svn lib/libLLVMAArch64Desc.so.6.0.0svn
lib/libLLVMAArch64Info.so.6.0.0svn lib/libLLVMCodeGen.so.6.0.0svn
lib/libLLVMCore.so.6.0.0svn lib/libLLVMMC.so.6.0.0svn
lib/libLLVMMIRParser.so.6.0.0svn lib/libLLVMSelectionDAG.so.6.0.0svn
lib/libLLVMTarget.so.6.0.0svn lib/libLLVMSupport.so.6.0.0svn -lpthread
lib/libgtest_main.so.6.0.0svn lib/libgtest.so.6.0.0svn -lpthread
-Wl,-rpath,/home/seurer/llvm/build/llvm-test3/lib && :
unittests/Target/AArch64/CMakeFiles/AArch64Tests.dir/InstSizes.cpp.o:(.toc+0x0):
undefined reference to `vtable for llvm::LegalizerInfo'
unittests/Target/AArch64/CMakeFiles/AArch64Tests.dir/InstSizes.cpp.o:(.toc+0x8):
undefined reference to `vtable for llvm::RegisterBankInfo'
collect2: error: ld returned 1 exit status
You can see the failure here on the buildbots (look at stdio):
http://lab.llvm.org:8011/builders/clang-ppc64le-linux-multistage/builds/3428
On 08/04/2017 03:15 PM, Quentin Colombet via llvm-commits wrote:
> Author: qcolombet
> Date: Fri Aug 4 13:15:46 2017
> New Revision: 310115
>
> URL: http://llvm.org/viewvc/llvm-project?rev=310115&view=rev
> Log:
> [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.
>
> Removed:
> llvm/trunk/include/llvm/CodeGen/GlobalISel/GISelAccessor.h
> Modified:
> llvm/trunk/docs/GlobalISel.rst
> llvm/trunk/lib/Target/AArch64/AArch64Subtarget.cpp
> llvm/trunk/lib/Target/AArch64/AArch64Subtarget.h
> llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.cpp
> llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.h
> llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp
> llvm/trunk/lib/Target/ARM/ARMSubtarget.h
> llvm/trunk/lib/Target/X86/X86Subtarget.cpp
> llvm/trunk/lib/Target/X86/X86Subtarget.h
>
> Modified: llvm/trunk/docs/GlobalISel.rst
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/GlobalISel.rst?rev=310115&r1=310114&r2=310115&view=diff
> ==============================================================================
> --- llvm/trunk/docs/GlobalISel.rst (original)
> +++ llvm/trunk/docs/GlobalISel.rst Fri Aug 4 13:15:46 2017
> @@ -633,5 +633,3 @@ Additionally:
>
> * ``TargetPassConfig`` --- create the passes constituting the pipeline,
> including additional passes not included in the :ref:`pipeline`.
> -* ``GISelAccessor`` --- setup the various subtarget-provided classes, with a
> - graceful fallback to no-op when GlobalISel isn't enabled.
>
> Removed: llvm/trunk/include/llvm/CodeGen/GlobalISel/GISelAccessor.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/GlobalISel/GISelAccessor.h?rev=310114&view=auto
> ==============================================================================
> --- llvm/trunk/include/llvm/CodeGen/GlobalISel/GISelAccessor.h (original)
> +++ llvm/trunk/include/llvm/CodeGen/GlobalISel/GISelAccessor.h (removed)
> @@ -1,39 +0,0 @@
> -//===-- GISelAccessor.h - GISel Accessor ------------------------*- C++ -*-===//
> -//
> -// The LLVM Compiler Infrastructure
> -//
> -// This file is distributed under the University of Illinois Open Source
> -// License. See LICENSE.TXT for details.
> -//
> -//===----------------------------------------------------------------------===//
> -//
> -/// This file declares the API to access the various APIs related
> -/// to GlobalISel.
> -//
> -//===----------------------------------------------------------------------===/
> -
> -#ifndef LLVM_CODEGEN_GLOBALISEL_GISELACCESSOR_H
> -#define LLVM_CODEGEN_GLOBALISEL_GISELACCESSOR_H
> -
> -namespace llvm {
> -class CallLowering;
> -class InstructionSelector;
> -class LegalizerInfo;
> -class RegisterBankInfo;
> -
> -/// The goal of this helper class is to gather the accessor to all
> -/// the APIs related to GlobalISel.
> -/// It should be derived to feature an actual accessor to the GISel APIs.
> -/// The reason why this is not simply done into the subtarget is to avoid
> -/// spreading ifdefs around.
> -struct GISelAccessor {
> - virtual ~GISelAccessor() {}
> - virtual const CallLowering *getCallLowering() const { return nullptr;}
> - virtual const InstructionSelector *getInstructionSelector() const {
> - return nullptr;
> - }
> - virtual const LegalizerInfo *getLegalizerInfo() const { return nullptr; }
> - virtual const RegisterBankInfo *getRegBankInfo() const { return nullptr;}
> -};
> -} // End namespace llvm;
> -#endif
>
> Modified: llvm/trunk/lib/Target/AArch64/AArch64Subtarget.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64Subtarget.cpp?rev=310115&r1=310114&r2=310115&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/AArch64Subtarget.cpp (original)
> +++ llvm/trunk/lib/Target/AArch64/AArch64Subtarget.cpp Fri Aug 4 13:15:46 2017
> @@ -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::initializePropert
> }
> }
>
> -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
>
> Modified: llvm/trunk/lib/Target/AArch64/AArch64Subtarget.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64Subtarget.h?rev=310115&r1=310114&r2=310115&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/AArch64Subtarget.h (original)
> +++ llvm/trunk/lib/Target/AArch64/AArch64Subtarget.h Fri Aug 4 13:15:46 2017
> @@ -19,7 +19,10 @@
> #include "AArch64InstrInfo.h"
> #include "AArch64RegisterInfo.h"
> #include "AArch64SelectionDAGInfo.h"
> -#include "llvm/CodeGen/GlobalISel/GISelAccessor.h"
> +#include "llvm/CodeGen/GlobalISel/CallLowering.h"
> +#include "llvm/CodeGen/GlobalISel/InstructionSelector.h"
> +#include "llvm/CodeGen/GlobalISel/LegalizerInfo.h"
> +#include "llvm/CodeGen/GlobalISel/RegisterBankInfo.h"
> #include "llvm/IR/DataLayout.h"
> #include "llvm/Target/TargetSubtargetInfo.h"
> #include <string>
> @@ -124,10 +127,12 @@ protected:
> AArch64InstrInfo InstrInfo;
> AArch64SelectionDAGInfo TSInfo;
> AArch64TargetLowering TLInfo;
> - /// Gather the accessor points to GlobalISel-related APIs.
> - /// This is used to avoid ifndefs spreading around while GISel is
> - /// an optional library.
> - std::unique_ptr<GISelAccessor> GISel;
> +
> + /// GlobalISel related APIs.
> + std::unique_ptr<CallLowering> CallLoweringInfo;
> + std::unique_ptr<InstructionSelector> InstSelector;
> + std::unique_ptr<LegalizerInfo> Legalizer;
> + std::unique_ptr<RegisterBankInfo> RegBankInfo;
>
> private:
> /// initializeSubtargetDependencies - Initializes using CPUString and the
> @@ -146,11 +151,6 @@ public:
> const std::string &FS, const TargetMachine &TM,
> bool LittleEndian);
>
> - /// This object will take onwership of \p GISelAccessor.
> - void setGISelAccessor(GISelAccessor &GISel) {
> - this->GISel.reset(&GISel);
> - }
> -
> const AArch64SelectionDAGInfo *getSelectionDAGInfo() const override {
> return &TSInfo;
> }
>
> Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.cpp?rev=310115&r1=310114&r2=310115&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.cpp (original)
> +++ llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.cpp Fri Aug 4 13:15:46 2017
> @@ -78,29 +78,6 @@ AMDGPUSubtarget::initializeSubtargetDepe
> return *this;
> }
>
> -namespace {
> -
> -struct SIGISelActualAccessor : public GISelAccessor {
> - std::unique_ptr<AMDGPUCallLowering> CallLoweringInfo;
> - std::unique_ptr<InstructionSelector> InstSelector;
> - std::unique_ptr<LegalizerInfo> Legalizer;
> - std::unique_ptr<RegisterBankInfo> RegBankInfo;
> - const AMDGPUCallLowering *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
> -
> AMDGPUSubtarget::AMDGPUSubtarget(const Triple &TT, StringRef GPU, StringRef FS,
> const TargetMachine &TM)
> : AMDGPUGenSubtargetInfo(TT, GPU, FS),
> @@ -354,14 +331,12 @@ SISubtarget::SISubtarget(const Triple &T
> : AMDGPUSubtarget(TT, GPU, FS, TM), InstrInfo(*this),
> FrameLowering(TargetFrameLowering::StackGrowsUp, getStackAlignment(), 0),
> TLInfo(TM, *this) {
> - SIGISelActualAccessor *GISel = new SIGISelActualAccessor();
> - GISel->CallLoweringInfo.reset(new AMDGPUCallLowering(*getTargetLowering()));
> - GISel->Legalizer.reset(new AMDGPULegalizerInfo());
> -
> - GISel->RegBankInfo.reset(new AMDGPURegisterBankInfo(*getRegisterInfo()));
> - GISel->InstSelector.reset(new AMDGPUInstructionSelector(
> - *this, *static_cast<AMDGPURegisterBankInfo *>(GISel->RegBankInfo.get())));
> - setGISelAccessor(*GISel);
> + CallLoweringInfo.reset(new AMDGPUCallLowering(*getTargetLowering()));
> + Legalizer.reset(new AMDGPULegalizerInfo());
> +
> + RegBankInfo.reset(new AMDGPURegisterBankInfo(*getRegisterInfo()));
> + InstSelector.reset(new AMDGPUInstructionSelector(
> + *this, *static_cast<AMDGPURegisterBankInfo *>(RegBankInfo.get())));
> }
>
> void SISubtarget::overrideSchedPolicy(MachineSchedPolicy &Policy,
>
> Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.h?rev=310115&r1=310114&r2=310115&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.h (original)
> +++ llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.h Fri Aug 4 13:15:46 2017
> @@ -16,6 +16,7 @@
> #define LLVM_LIB_TARGET_AMDGPU_AMDGPUSUBTARGET_H
>
> #include "AMDGPU.h"
> +#include "AMDGPUCallLowering.h"
> #include "R600FrameLowering.h"
> #include "R600ISelLowering.h"
> #include "R600InstrInfo.h"
> @@ -25,7 +26,9 @@
> #include "SIMachineFunctionInfo.h"
> #include "Utils/AMDGPUBaseInfo.h"
> #include "llvm/ADT/Triple.h"
> -#include "llvm/CodeGen/GlobalISel/GISelAccessor.h"
> +#include "llvm/CodeGen/GlobalISel/InstructionSelector.h"
> +#include "llvm/CodeGen/GlobalISel/LegalizerInfo.h"
> +#include "llvm/CodeGen/GlobalISel/RegisterBankInfo.h"
> #include "llvm/CodeGen/MachineFunction.h"
> #include "llvm/CodeGen/SelectionDAGTargetInfo.h"
> #include "llvm/MC/MCInstrItineraries.h"
> @@ -631,7 +634,12 @@ private:
> SIInstrInfo InstrInfo;
> SIFrameLowering FrameLowering;
> SITargetLowering TLInfo;
> - std::unique_ptr<GISelAccessor> GISel;
> +
> + /// GlobalISel related APIs.
> + std::unique_ptr<AMDGPUCallLowering> CallLoweringInfo;
> + std::unique_ptr<InstructionSelector> InstSelector;
> + std::unique_ptr<LegalizerInfo> Legalizer;
> + std::unique_ptr<RegisterBankInfo> RegBankInfo;
>
> public:
> SISubtarget(const Triple &TT, StringRef CPU, StringRef FS,
> @@ -650,33 +658,25 @@ public:
> }
>
> const CallLowering *getCallLowering() const override {
> - assert(GISel && "Access to GlobalISel APIs not set");
> - return GISel->getCallLowering();
> + return CallLoweringInfo.get();
> }
>
> const InstructionSelector *getInstructionSelector() const override {
> - assert(GISel && "Access to GlobalISel APIs not set");
> - return GISel->getInstructionSelector();
> + return InstSelector.get();
> }
>
> const LegalizerInfo *getLegalizerInfo() const override {
> - assert(GISel && "Access to GlobalISel APIs not set");
> - return GISel->getLegalizerInfo();
> + return Legalizer.get();
> }
>
> const RegisterBankInfo *getRegBankInfo() const override {
> - assert(GISel && "Access to GlobalISel APIs not set");
> - return GISel->getRegBankInfo();
> + return RegBankInfo.get();
> }
>
> const SIRegisterInfo *getRegisterInfo() const override {
> return &InstrInfo.getRegisterInfo();
> }
>
> - void setGISelAccessor(GISelAccessor &GISel) {
> - this->GISel.reset(&GISel);
> - }
> -
> // XXX - Why is this here if it isn't in the default pass set?
> bool enableEarlyIfConversion() const override {
> return true;
>
> Modified: llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp?rev=310115&r1=310114&r2=310115&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp Fri Aug 4 13:15:46 2017
> @@ -28,7 +28,6 @@
> #include "llvm/ADT/StringRef.h"
> #include "llvm/ADT/Triple.h"
> #include "llvm/ADT/Twine.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"
> @@ -97,33 +96,6 @@ ARMFrameLowering *ARMSubtarget::initiali
> return new ARMFrameLowering(STI);
> }
>
> -namespace {
> -
> -struct ARMGISelActualAccessor : 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
> -
> ARMSubtarget::ARMSubtarget(const Triple &TT, const std::string &CPU,
> const std::string &FS,
> const ARMBaseTargetMachine &TM, bool IsLittle)
> @@ -141,40 +113,34 @@ ARMSubtarget::ARMSubtarget(const Triple
> assert((isThumb() || hasARMOps()) &&
> "Target must either be thumb or support ARM operations!");
>
> - ARMGISelActualAccessor *GISel = new ARMGISelActualAccessor();
> - GISel->CallLoweringInfo.reset(new ARMCallLowering(*getTargetLowering()));
> - GISel->Legalizer.reset(new ARMLegalizerInfo(*this));
> + CallLoweringInfo.reset(new ARMCallLowering(*getTargetLowering()));
> + Legalizer.reset(new ARMLegalizerInfo(*this));
>
> auto *RBI = new ARMRegisterBankInfo(*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?
> - GISel->InstSelector.reset(createARMInstructionSelector(
> + InstSelector.reset(createARMInstructionSelector(
> *static_cast<const ARMBaseTargetMachine *>(&TM), *this, *RBI));
>
> - GISel->RegBankInfo.reset(RBI);
> - setGISelAccessor(*GISel);
> + RegBankInfo.reset(RBI);
> }
>
> const CallLowering *ARMSubtarget::getCallLowering() const {
> - assert(GISel && "Access to GlobalISel APIs not set");
> - return GISel->getCallLowering();
> + return CallLoweringInfo.get();
> }
>
> const InstructionSelector *ARMSubtarget::getInstructionSelector() const {
> - assert(GISel && "Access to GlobalISel APIs not set");
> - return GISel->getInstructionSelector();
> + return InstSelector.get();
> }
>
> const LegalizerInfo *ARMSubtarget::getLegalizerInfo() const {
> - assert(GISel && "Access to GlobalISel APIs not set");
> - return GISel->getLegalizerInfo();
> + return Legalizer.get();
> }
>
> const RegisterBankInfo *ARMSubtarget::getRegBankInfo() const {
> - assert(GISel && "Access to GlobalISel APIs not set");
> - return GISel->getRegBankInfo();
> + return RegBankInfo.get();
> }
>
> bool ARMSubtarget::isXRaySupported() const {
>
> Modified: llvm/trunk/lib/Target/ARM/ARMSubtarget.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMSubtarget.h?rev=310115&r1=310114&r2=310115&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMSubtarget.h (original)
> +++ llvm/trunk/lib/Target/ARM/ARMSubtarget.h Fri Aug 4 13:15:46 2017
> @@ -20,7 +20,10 @@
> #include "ARMISelLowering.h"
> #include "ARMSelectionDAGInfo.h"
> #include "llvm/ADT/Triple.h"
> -#include "llvm/CodeGen/GlobalISel/GISelAccessor.h"
> +#include "llvm/CodeGen/GlobalISel/CallLowering.h"
> +#include "llvm/CodeGen/GlobalISel/InstructionSelector.h"
> +#include "llvm/CodeGen/GlobalISel/LegalizerInfo.h"
> +#include "llvm/CodeGen/GlobalISel/RegisterBankInfo.h"
> #include "llvm/CodeGen/MachineFunction.h"
> #include "llvm/MC/MCInstrItineraries.h"
> #include "llvm/MC/MCSchedule.h"
> @@ -419,9 +422,6 @@ public:
> ARMSubtarget(const Triple &TT, const std::string &CPU, const std::string &FS,
> const ARMBaseTargetMachine &TM, bool IsLittle);
>
> - /// This object will take onwership of \p GISelAccessor.
> - void setGISelAccessor(GISelAccessor &GISel) { this->GISel.reset(&GISel); }
> -
> /// getMaxInlineSizeThreshold - Returns the maximum memset / memcpy size
> /// that still makes it profitable to inline the call.
> unsigned getMaxInlineSizeThreshold() const {
> @@ -469,10 +469,11 @@ private:
> std::unique_ptr<ARMBaseInstrInfo> InstrInfo;
> ARMTargetLowering TLInfo;
>
> - /// Gather the accessor points to GlobalISel-related APIs.
> - /// This is used to avoid ifndefs spreading around while GISel is
> - /// an optional library.
> - std::unique_ptr<GISelAccessor> GISel;
> + /// GlobalISel related APIs.
> + std::unique_ptr<CallLowering> CallLoweringInfo;
> + std::unique_ptr<InstructionSelector> InstSelector;
> + std::unique_ptr<LegalizerInfo> Legalizer;
> + std::unique_ptr<RegisterBankInfo> RegBankInfo;
>
> void initializeEnvironment();
> void initSubtargetFeatures(StringRef CPU, StringRef FS);
>
> Modified: llvm/trunk/lib/Target/X86/X86Subtarget.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86Subtarget.cpp?rev=310115&r1=310114&r2=310115&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/X86Subtarget.cpp (original)
> +++ llvm/trunk/lib/Target/X86/X86Subtarget.cpp Fri Aug 4 13:15:46 2017
> @@ -348,33 +348,6 @@ X86Subtarget &X86Subtarget::initializeSu
> return *this;
> }
>
> -namespace {
> -
> -struct X86GISelActualAccessor : public GISelAccessor {
> - std::unique_ptr<CallLowering> CallLoweringInfo;
> - std::unique_ptr<LegalizerInfo> Legalizer;
> - std::unique_ptr<RegisterBankInfo> RegBankInfo;
> - std::unique_ptr<InstructionSelector> InstSelector;
> -
> - 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
> -
> X86Subtarget::X86Subtarget(const Triple &TT, StringRef CPU, StringRef FS,
> const X86TargetMachine &TM,
> unsigned StackAlignOverride)
> @@ -399,35 +372,29 @@ X86Subtarget::X86Subtarget(const Triple
> setPICStyle(PICStyles::StubPIC);
> else if (isTargetELF())
> setPICStyle(PICStyles::GOT);
> - X86GISelActualAccessor *GISel = new X86GISelActualAccessor();
>
> - GISel->CallLoweringInfo.reset(new X86CallLowering(*getTargetLowering()));
> - GISel->Legalizer.reset(new X86LegalizerInfo(*this, TM));
> + CallLoweringInfo.reset(new X86CallLowering(*getTargetLowering()));
> + Legalizer.reset(new X86LegalizerInfo(*this, TM));
>
> auto *RBI = new X86RegisterBankInfo(*getRegisterInfo());
> - GISel->RegBankInfo.reset(RBI);
> - GISel->InstSelector.reset(createX86InstructionSelector(TM, *this, *RBI));
> - setGISelAccessor(*GISel);
> + RegBankInfo.reset(RBI);
> + InstSelector.reset(createX86InstructionSelector(TM, *this, *RBI));
> }
>
> const CallLowering *X86Subtarget::getCallLowering() const {
> - assert(GISel && "Access to GlobalISel APIs not set");
> - return GISel->getCallLowering();
> + return CallLoweringInfo.get();
> }
>
> const InstructionSelector *X86Subtarget::getInstructionSelector() const {
> - assert(GISel && "Access to GlobalISel APIs not set");
> - return GISel->getInstructionSelector();
> + return InstSelector.get();
> }
>
> const LegalizerInfo *X86Subtarget::getLegalizerInfo() const {
> - assert(GISel && "Access to GlobalISel APIs not set");
> - return GISel->getLegalizerInfo();
> + return Legalizer.get();
> }
>
> const RegisterBankInfo *X86Subtarget::getRegBankInfo() const {
> - assert(GISel && "Access to GlobalISel APIs not set");
> - return GISel->getRegBankInfo();
> + return RegBankInfo.get();
> }
>
> bool X86Subtarget::enableEarlyIfConversion() const {
>
> Modified: llvm/trunk/lib/Target/X86/X86Subtarget.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86Subtarget.h?rev=310115&r1=310114&r2=310115&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/X86Subtarget.h (original)
> +++ llvm/trunk/lib/Target/X86/X86Subtarget.h Fri Aug 4 13:15:46 2017
> @@ -20,7 +20,10 @@
> #include "X86SelectionDAGInfo.h"
> #include "llvm/ADT/StringRef.h"
> #include "llvm/ADT/Triple.h"
> -#include "llvm/CodeGen/GlobalISel/GISelAccessor.h"
> +#include "llvm/CodeGen/GlobalISel/CallLowering.h"
> +#include "llvm/CodeGen/GlobalISel/InstructionSelector.h"
> +#include "llvm/CodeGen/GlobalISel/LegalizerInfo.h"
> +#include "llvm/CodeGen/GlobalISel/RegisterBankInfo.h"
> #include "llvm/IR/CallingConv.h"
> #include "llvm/MC/MCInstrItineraries.h"
> #include "llvm/Target/TargetMachine.h"
> @@ -314,10 +317,11 @@ protected:
> /// Instruction itineraries for scheduling
> InstrItineraryData InstrItins;
>
> - /// Gather the accessor points to GlobalISel-related APIs.
> - /// This is used to avoid ifndefs spreading around while GISel is
> - /// an optional library.
> - std::unique_ptr<GISelAccessor> GISel;
> + /// GlobalISel related APIs.
> + std::unique_ptr<CallLowering> CallLoweringInfo;
> + std::unique_ptr<LegalizerInfo> Legalizer;
> + std::unique_ptr<RegisterBankInfo> RegBankInfo;
> + std::unique_ptr<InstructionSelector> InstSelector;
>
> private:
> /// Override the stack alignment.
> @@ -346,9 +350,6 @@ public:
> X86Subtarget(const Triple &TT, StringRef CPU, StringRef FS,
> const X86TargetMachine &TM, unsigned StackAlignOverride);
>
> - /// This object will take onwership of \p GISelAccessor.
> - void setGISelAccessor(GISelAccessor &GISel) { this->GISel.reset(&GISel); }
> -
> const X86TargetLowering *getTargetLowering() const override {
> return &TLInfo;
> }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
--
-Bill Seurer
More information about the llvm-commits
mailing list