diff --git a/llvm/lib/Target/AArch64/AArch64Subtarget.cpp b/llvm/lib/Target/AArch64/AArch64Subtarget.cpp index e68f5276b57f..8be1f66d0572 100644 --- a/llvm/lib/Target/AArch64/AArch64Subtarget.cpp +++ b/llvm/lib/Target/AArch64/AArch64Subtarget.cpp @@ -44,7 +44,7 @@ AArch64Subtarget::AArch64Subtarget(const std::string &TT, ? "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() { + FrameLowering(), TSInfo(&DL) { // Determine default and user-specified characteristics if (CPUString.empty()) diff --git a/llvm/lib/Target/AArch64/AArch64Subtarget.h b/llvm/lib/Target/AArch64/AArch64Subtarget.h index 5de701b725f8..cfb126ebf139 100644 --- a/llvm/lib/Target/AArch64/AArch64Subtarget.h +++ b/llvm/lib/Target/AArch64/AArch64Subtarget.h @@ -16,6 +16,7 @@ #include "AArch64FrameLowering.h" #include "AArch64RegisterInfo.h" +#include "AArch64SelectionDAGInfo.h" #include "llvm/IR/DataLayout.h" #include "llvm/Target/TargetSubtargetInfo.h" #include @@ -53,6 +54,7 @@ protected: const DataLayout DL; AArch64FrameLowering FrameLowering; + AArch64SelectionDAGInfo TSInfo; public: /// This constructor initializes the data members to match that @@ -60,6 +62,7 @@ public: AArch64Subtarget(const std::string &TT, const std::string &CPU, const std::string &FS, bool LittleEndian); + const AArch64SelectionDAGInfo *getSelectionDAGInfo() const { return &TSInfo; } const AArch64FrameLowering *getFrameLowering() const { return &FrameLowering; } diff --git a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp index c10098d1837c..7f00df491096 100644 --- a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp +++ b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp @@ -78,7 +78,7 @@ AArch64TargetMachine::AArch64TargetMachine(const Target &T, StringRef TT, bool LittleEndian) : LLVMTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL), Subtarget(TT, CPU, FS, LittleEndian), - InstrInfo(Subtarget), TLInfo(*this), TSInfo(getDataLayout()) { + InstrInfo(Subtarget), TLInfo(*this) { initAsmInfo(); } diff --git a/llvm/lib/Target/AArch64/AArch64TargetMachine.h b/llvm/lib/Target/AArch64/AArch64TargetMachine.h index e3616e1bb930..417354010d37 100644 --- a/llvm/lib/Target/AArch64/AArch64TargetMachine.h +++ b/llvm/lib/Target/AArch64/AArch64TargetMachine.h @@ -32,7 +32,6 @@ protected: private: AArch64InstrInfo InstrInfo; AArch64TargetLowering TLInfo; - AArch64SelectionDAGInfo TSInfo; public: AArch64TargetMachine(const Target &T, StringRef TT, StringRef CPU, @@ -57,7 +56,7 @@ public: return &InstrInfo.getRegisterInfo(); } const AArch64SelectionDAGInfo *getSelectionDAGInfo() const override { - return &TSInfo; + return getSubtargetImpl()->getSelectionDAGInfo(); } // Pass Pipeline Configuration