[llvm] r301841 - [AArch64] Move GISel accessor initialization from TargetMachine to Subtarget.
Quentin Colombet via llvm-commits
llvm-commits at lists.llvm.org
Mon May 8 08:02:22 PDT 2017
+Ahmed
> On May 4, 2017, at 9:36 PM, Eric Christopher <echristo at gmail.com> wrote:
>
>
>
> On Mon, May 1, 2017 at 3:06 PM Quentin Colombet via llvm-commits <llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>> wrote:
> Author: qcolombet
> Date: Mon May 1 16:53:19 2017
> New Revision: 301841
>
> URL: http://llvm.org/viewvc/llvm-project?rev=301841&view=rev <http://llvm.org/viewvc/llvm-project?rev=301841&view=rev>
> Log:
> [AArch64] Move GISel accessor initialization from TargetMachine to Subtarget.
>
> NFC
>
>
> Thanks Quentin.
>
> One inline post-commit review change on the original:
>
> + // 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?
>
> This seems like an odd series of comments - especially with creating RBI above. Is there a GISel target that doesn't have RBI or are you using something else?
Not that I am aware off.
> Otherwise I'm not sure what the comment is getting us :)
Ahmed, could you comment on this? I admit I am as puzzled as Eric here.
Cheers,
-Quentin
>
> Suppose you could also have the accessor return a pointer which could be null if you wanted to conditionalize it?
>
> *shrug*
>
> -eric
>
> + AArch64GISel->InstSelector.reset(createAArch64InstructionSelector(
> + *static_cast<const AArch64TargetMachine *>(&TM), *this, *RBI));
> +
> + AArch64GISel->RegBankInfo.reset(RBI);
> +#endif
> + setGISelAccessor(*AArch64GISel);
> +}
>
> const CallLowering *AArch64Subtarget::getCallLowering() const {
> assert(GISel && "Access to GlobalISel APIs not set");
>
> Modified: llvm/trunk/lib/Target/AArch64/AArch64TargetMachine.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64TargetMachine.cpp?rev=301841&r1=301840&r2=301841&view=diff <http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64TargetMachine.cpp?rev=301841&r1=301840&r2=301841&view=diff>
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/AArch64TargetMachine.cpp (original)
> +++ llvm/trunk/lib/Target/AArch64/AArch64TargetMachine.cpp Mon May 1 16:53:19 2017
> @@ -11,12 +11,7 @@
> //===----------------------------------------------------------------------===//
>
> #include "AArch64.h"
> -#include "AArch64CallLowering.h"
> -#include "AArch64LegalizerInfo.h"
> #include "AArch64MacroFusion.h"
> -#ifdef LLVM_BUILD_GLOBAL_ISEL
> -#include "AArch64RegisterBankInfo.h"
> -#endif
> #include "AArch64Subtarget.h"
> #include "AArch64TargetMachine.h"
> #include "AArch64TargetObjectFile.h"
> @@ -25,7 +20,6 @@
> #include "llvm/ADT/STLExtras.h"
> #include "llvm/ADT/Triple.h"
> #include "llvm/Analysis/TargetTransformInfo.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"
> @@ -222,35 +216,6 @@ AArch64TargetMachine::AArch64TargetMachi
>
> AArch64TargetMachine::~AArch64TargetMachine() = default;
>
> -#ifdef LLVM_BUILD_GLOBAL_ISEL
> -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
> -#endif
> -
> const AArch64Subtarget *
> AArch64TargetMachine::getSubtargetImpl(const Function &F) const {
> Attribute CPUAttr = F.getFnAttribute("target-cpu");
> @@ -274,26 +239,6 @@ AArch64TargetMachine::getSubtargetImpl(c
> resetTargetOptions(F);
> I = llvm::make_unique<AArch64Subtarget>(TargetTriple, CPU, FS, *this,
> isLittle, ForCodeSize);
> -#ifndef LLVM_BUILD_GLOBAL_ISEL
> - GISelAccessor *GISel = new GISelAccessor();
> -#else
> - AArch64GISelActualAccessor *GISel =
> - new AArch64GISelActualAccessor();
> - GISel->CallLoweringInfo.reset(
> - new AArch64CallLowering(*I->getTargetLowering()));
> - GISel->Legalizer.reset(new AArch64LegalizerInfo());
> -
> - auto *RBI = new AArch64RegisterBankInfo(*I->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(
> - createAArch64InstructionSelector(*this, *I, *RBI));
> -
> - GISel->RegBankInfo.reset(RBI);
> -#endif
> - I->setGISelAccessor(*GISel);
> }
> return I.get();
> }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170508/cca4449a/attachment-0001.html>
More information about the llvm-commits
mailing list