? "e-m:o-i64:64-i128:128-n32:64-S128"
: (LittleEndian ? "e-m:e-i64:64-i128:128-n32:64-S128"
: "E-m:e-i64:64-i128:128-n32:64-S128")),
- FrameLowering(), TSInfo(&DL) {
+ FrameLowering(), InstrInfo(*this), TSInfo(&DL) {
// Determine default and user-specified characteristics
if (CPUString.empty())
#ifndef AArch64SUBTARGET_H
#define AArch64SUBTARGET_H
+#include "AArch64InstrInfo.h"
#include "AArch64FrameLowering.h"
#include "AArch64RegisterInfo.h"
#include "AArch64SelectionDAGInfo.h"
const DataLayout DL;
AArch64FrameLowering FrameLowering;
+ AArch64InstrInfo InstrInfo;
AArch64SelectionDAGInfo TSInfo;
public:
const AArch64FrameLowering *getFrameLowering() const {
return &FrameLowering;
}
+ const AArch64InstrInfo *getInstrInfo() const { return &InstrInfo; }
const DataLayout *getDataLayout() const { return &DL; }
bool enableMachineScheduler() const override { return true; }
CodeGenOpt::Level OL,
bool LittleEndian)
: LLVMTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL),
- Subtarget(TT, CPU, FS, LittleEndian),
- InstrInfo(Subtarget), TLInfo(*this) {
+ Subtarget(TT, CPU, FS, LittleEndian), TLInfo(*this) {
initAsmInfo();
}
AArch64Subtarget Subtarget;
private:
- AArch64InstrInfo InstrInfo;
AArch64TargetLowering TLInfo;
public:
const AArch64FrameLowering *getFrameLowering() const override {
return getSubtargetImpl()->getFrameLowering();
}
- const AArch64InstrInfo *getInstrInfo() const override { return &InstrInfo; }
+ const AArch64InstrInfo *getInstrInfo() const override {
+ return getSubtargetImpl()->getInstrInfo();
+ }
const AArch64RegisterInfo *getRegisterInfo() const override {
- return &InstrInfo.getRegisterInfo();
+ return &getInstrInfo()->getRegisterInfo();
}
const AArch64SelectionDAGInfo *getSelectionDAGInfo() const override {
return getSubtargetImpl()->getSelectionDAGInfo();