From: Eric Christopher Date: Fri, 13 Jun 2014 00:20:39 +0000 (+0000) Subject: Move ARMSelectionDAGInfo from the TargetMachine to the subtarget. X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=f7a2d5e387de25af9711f04f253bc0e63fd988dd Move ARMSelectionDAGInfo from the TargetMachine to the subtarget. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210862 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/ARM/ARMSubtarget.cpp b/lib/Target/ARM/ARMSubtarget.cpp index 72fce3b301d..fc842512ef0 100644 --- a/lib/Target/ARM/ARMSubtarget.cpp +++ b/lib/Target/ARM/ARMSubtarget.cpp @@ -147,7 +147,8 @@ ARMSubtarget::ARMSubtarget(const std::string &TT, const std::string &CPU, : ARMGenSubtargetInfo(TT, CPU, FS), ARMProcFamily(Others), ARMProcClass(None), stackAlignment(4), CPUString(CPU), IsLittle(IsLittle), TargetTriple(TT), Options(Options), TargetABI(ARM_ABI_UNKNOWN), - DL(computeDataLayout(initializeSubtargetDependencies(CPU, FS))) {} + DL(computeDataLayout(initializeSubtargetDependencies(CPU, FS))), + TSInfo(DL) {} void ARMSubtarget::initializeEnvironment() { HasV4TOps = false; diff --git a/lib/Target/ARM/ARMSubtarget.h b/lib/Target/ARM/ARMSubtarget.h index 820d9f12fd6..7da80ec0d49 100644 --- a/lib/Target/ARM/ARMSubtarget.h +++ b/lib/Target/ARM/ARMSubtarget.h @@ -14,6 +14,7 @@ #ifndef ARMSUBTARGET_H #define ARMSUBTARGET_H +#include "ARMSelectionDAGInfo.h" #include "MCTargetDesc/ARMMCTargetDesc.h" #include "llvm/ADT/Triple.h" #include "llvm/IR/DataLayout.h" @@ -254,9 +255,11 @@ protected: ARMSubtarget &initializeSubtargetDependencies(StringRef CPU, StringRef FS); const DataLayout *getDataLayout() const { return &DL; } + const ARMSelectionDAGInfo *getSelectionDAGInfo() const { return &TSInfo; } private: const DataLayout DL; + ARMSelectionDAGInfo TSInfo; void initializeEnvironment(); void resetSubtargetFeatures(StringRef CPU, StringRef FS); diff --git a/lib/Target/ARM/ARMTargetMachine.cpp b/lib/Target/ARM/ARMTargetMachine.cpp index 5c77769fb83..dabe2d6997c 100644 --- a/lib/Target/ARM/ARMTargetMachine.cpp +++ b/lib/Target/ARM/ARMTargetMachine.cpp @@ -82,7 +82,6 @@ ARMTargetMachine::ARMTargetMachine(const Target &T, StringRef TT, : ARMBaseTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL, isLittle), InstrInfo(Subtarget), TLInfo(*this), - TSInfo(*getDataLayout()), FrameLowering(Subtarget) { initAsmInfo(); if (!Subtarget.hasARMOps()) @@ -121,7 +120,6 @@ ThumbTargetMachine::ThumbTargetMachine(const Target &T, StringRef TT, ? ((ARMBaseInstrInfo*)new Thumb2InstrInfo(Subtarget)) : ((ARMBaseInstrInfo*)new Thumb1InstrInfo(Subtarget))), TLInfo(*this), - TSInfo(*getDataLayout()), FrameLowering(Subtarget.hasThumb2() ? new ARMFrameLowering(Subtarget) : (ARMFrameLowering*)new Thumb1FrameLowering(Subtarget)) { diff --git a/lib/Target/ARM/ARMTargetMachine.h b/lib/Target/ARM/ARMTargetMachine.h index 2f746dd6b23..2188a8836e2 100644 --- a/lib/Target/ARM/ARMTargetMachine.h +++ b/lib/Target/ARM/ARMTargetMachine.h @@ -69,7 +69,6 @@ class ARMTargetMachine : public ARMBaseTargetMachine { virtual void anchor(); ARMInstrInfo InstrInfo; ARMTargetLowering TLInfo; - ARMSelectionDAGInfo TSInfo; ARMFrameLowering FrameLowering; public: ARMTargetMachine(const Target &T, StringRef TT, @@ -88,7 +87,7 @@ class ARMTargetMachine : public ARMBaseTargetMachine { } const ARMSelectionDAGInfo *getSelectionDAGInfo() const override { - return &TSInfo; + return getSubtargetImpl()->getSelectionDAGInfo(); } const ARMFrameLowering *getFrameLowering() const override { return &FrameLowering; @@ -130,7 +129,6 @@ class ThumbTargetMachine : public ARMBaseTargetMachine { // Either Thumb1InstrInfo or Thumb2InstrInfo. std::unique_ptr InstrInfo; ARMTargetLowering TLInfo; - ARMSelectionDAGInfo TSInfo; // Either Thumb1FrameLowering or ARMFrameLowering. std::unique_ptr FrameLowering; public: @@ -151,7 +149,7 @@ public: } const ARMSelectionDAGInfo *getSelectionDAGInfo() const override { - return &TSInfo; + return getSubtargetImpl()->getSelectionDAGInfo(); } /// returns either Thumb1InstrInfo or Thumb2InstrInfo