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
This commit is contained in:
Eric Christopher
2014-06-13 00:20:39 +00:00
parent 1ee246100e
commit f7a2d5e387
4 changed files with 7 additions and 7 deletions

View File

@@ -147,7 +147,8 @@ ARMSubtarget::ARMSubtarget(const std::string &TT, const std::string &CPU,
: ARMGenSubtargetInfo(TT, CPU, FS), ARMProcFamily(Others), : ARMGenSubtargetInfo(TT, CPU, FS), ARMProcFamily(Others),
ARMProcClass(None), stackAlignment(4), CPUString(CPU), IsLittle(IsLittle), ARMProcClass(None), stackAlignment(4), CPUString(CPU), IsLittle(IsLittle),
TargetTriple(TT), Options(Options), TargetABI(ARM_ABI_UNKNOWN), TargetTriple(TT), Options(Options), TargetABI(ARM_ABI_UNKNOWN),
DL(computeDataLayout(initializeSubtargetDependencies(CPU, FS))) {} DL(computeDataLayout(initializeSubtargetDependencies(CPU, FS))),
TSInfo(DL) {}
void ARMSubtarget::initializeEnvironment() { void ARMSubtarget::initializeEnvironment() {
HasV4TOps = false; HasV4TOps = false;

View File

@@ -14,6 +14,7 @@
#ifndef ARMSUBTARGET_H #ifndef ARMSUBTARGET_H
#define ARMSUBTARGET_H #define ARMSUBTARGET_H
#include "ARMSelectionDAGInfo.h"
#include "MCTargetDesc/ARMMCTargetDesc.h" #include "MCTargetDesc/ARMMCTargetDesc.h"
#include "llvm/ADT/Triple.h" #include "llvm/ADT/Triple.h"
#include "llvm/IR/DataLayout.h" #include "llvm/IR/DataLayout.h"
@@ -254,9 +255,11 @@ protected:
ARMSubtarget &initializeSubtargetDependencies(StringRef CPU, StringRef FS); ARMSubtarget &initializeSubtargetDependencies(StringRef CPU, StringRef FS);
const DataLayout *getDataLayout() const { return &DL; } const DataLayout *getDataLayout() const { return &DL; }
const ARMSelectionDAGInfo *getSelectionDAGInfo() const { return &TSInfo; }
private: private:
const DataLayout DL; const DataLayout DL;
ARMSelectionDAGInfo TSInfo;
void initializeEnvironment(); void initializeEnvironment();
void resetSubtargetFeatures(StringRef CPU, StringRef FS); void resetSubtargetFeatures(StringRef CPU, StringRef FS);

View File

@@ -82,7 +82,6 @@ ARMTargetMachine::ARMTargetMachine(const Target &T, StringRef TT,
: ARMBaseTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL, isLittle), : ARMBaseTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL, isLittle),
InstrInfo(Subtarget), InstrInfo(Subtarget),
TLInfo(*this), TLInfo(*this),
TSInfo(*getDataLayout()),
FrameLowering(Subtarget) { FrameLowering(Subtarget) {
initAsmInfo(); initAsmInfo();
if (!Subtarget.hasARMOps()) if (!Subtarget.hasARMOps())
@@ -121,7 +120,6 @@ ThumbTargetMachine::ThumbTargetMachine(const Target &T, StringRef TT,
? ((ARMBaseInstrInfo*)new Thumb2InstrInfo(Subtarget)) ? ((ARMBaseInstrInfo*)new Thumb2InstrInfo(Subtarget))
: ((ARMBaseInstrInfo*)new Thumb1InstrInfo(Subtarget))), : ((ARMBaseInstrInfo*)new Thumb1InstrInfo(Subtarget))),
TLInfo(*this), TLInfo(*this),
TSInfo(*getDataLayout()),
FrameLowering(Subtarget.hasThumb2() FrameLowering(Subtarget.hasThumb2()
? new ARMFrameLowering(Subtarget) ? new ARMFrameLowering(Subtarget)
: (ARMFrameLowering*)new Thumb1FrameLowering(Subtarget)) { : (ARMFrameLowering*)new Thumb1FrameLowering(Subtarget)) {

View File

@@ -69,7 +69,6 @@ class ARMTargetMachine : public ARMBaseTargetMachine {
virtual void anchor(); virtual void anchor();
ARMInstrInfo InstrInfo; ARMInstrInfo InstrInfo;
ARMTargetLowering TLInfo; ARMTargetLowering TLInfo;
ARMSelectionDAGInfo TSInfo;
ARMFrameLowering FrameLowering; ARMFrameLowering FrameLowering;
public: public:
ARMTargetMachine(const Target &T, StringRef TT, ARMTargetMachine(const Target &T, StringRef TT,
@@ -88,7 +87,7 @@ class ARMTargetMachine : public ARMBaseTargetMachine {
} }
const ARMSelectionDAGInfo *getSelectionDAGInfo() const override { const ARMSelectionDAGInfo *getSelectionDAGInfo() const override {
return &TSInfo; return getSubtargetImpl()->getSelectionDAGInfo();
} }
const ARMFrameLowering *getFrameLowering() const override { const ARMFrameLowering *getFrameLowering() const override {
return &FrameLowering; return &FrameLowering;
@@ -130,7 +129,6 @@ class ThumbTargetMachine : public ARMBaseTargetMachine {
// Either Thumb1InstrInfo or Thumb2InstrInfo. // Either Thumb1InstrInfo or Thumb2InstrInfo.
std::unique_ptr<ARMBaseInstrInfo> InstrInfo; std::unique_ptr<ARMBaseInstrInfo> InstrInfo;
ARMTargetLowering TLInfo; ARMTargetLowering TLInfo;
ARMSelectionDAGInfo TSInfo;
// Either Thumb1FrameLowering or ARMFrameLowering. // Either Thumb1FrameLowering or ARMFrameLowering.
std::unique_ptr<ARMFrameLowering> FrameLowering; std::unique_ptr<ARMFrameLowering> FrameLowering;
public: public:
@@ -151,7 +149,7 @@ public:
} }
const ARMSelectionDAGInfo *getSelectionDAGInfo() const override { const ARMSelectionDAGInfo *getSelectionDAGInfo() const override {
return &TSInfo; return getSubtargetImpl()->getSelectionDAGInfo();
} }
/// returns either Thumb1InstrInfo or Thumb2InstrInfo /// returns either Thumb1InstrInfo or Thumb2InstrInfo