mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-28 19:25:00 +00:00
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:
@@ -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;
|
||||||
|
@@ -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);
|
||||||
|
@@ -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)) {
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user