diff options
author | Eric Christopher <echristo@gmail.com> | 2014-06-11 00:46:34 +0000 |
---|---|---|
committer | Eric Christopher <echristo@gmail.com> | 2014-06-11 00:46:34 +0000 |
commit | 7c9d4e058a671c8abf2c49bf3fe49aff3d91ca1f (patch) | |
tree | 4d64c0a37796a18d018a31deb1903b07bb84c117 | |
parent | d88b44d4447946a149b7d6b22fc7a1f7962640bd (diff) | |
download | bcm5719-llvm-7c9d4e058a671c8abf2c49bf3fe49aff3d91ca1f.tar.gz bcm5719-llvm-7c9d4e058a671c8abf2c49bf3fe49aff3d91ca1f.zip |
Move to a private function to initialize the subtarget dependencies
so that we can use initializer lists for the AArch64 Subtarget.
llvm-svn: 210616
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64Subtarget.cpp | 22 | ||||
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64Subtarget.h | 9 |
2 files changed, 20 insertions, 11 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64Subtarget.cpp b/llvm/lib/Target/AArch64/AArch64Subtarget.cpp index a1e8b87ed9c..bb0b72c585b 100644 --- a/llvm/lib/Target/AArch64/AArch64Subtarget.cpp +++ b/llvm/lib/Target/AArch64/AArch64Subtarget.cpp @@ -30,6 +30,17 @@ static cl::opt<bool> EnableEarlyIfConvert("aarch64-early-ifcvt", cl::desc("Enable the early if " "converter pass"), cl::init(true), cl::Hidden); +AArch64Subtarget & +AArch64Subtarget::initializeSubtargetDependencies(StringRef FS) { + // Determine default and user-specified characteristics + + if (CPUString.empty()) + CPUString = "generic"; + + ParseSubtargetFeatures(CPUString, FS); + return *this; +} + AArch64Subtarget::AArch64Subtarget(const std::string &TT, const std::string &CPU, const std::string &FS, TargetMachine &TM, @@ -45,15 +56,8 @@ 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(), InstrInfo(*this), TSInfo(&DL) { - // Determine default and user-specified characteristics - - if (CPUString.empty()) - CPUString = "generic"; - - ParseSubtargetFeatures(CPUString, FS); - TLInfo = make_unique<AArch64TargetLowering>(TM); -} + FrameLowering(), InstrInfo(initializeSubtargetDependencies(FS)), + TSInfo(&DL), TLInfo(TM) {} /// ClassifyGlobalReference - Find the target operand flags that describe /// how a global value should be referenced for the current subtarget. diff --git a/llvm/lib/Target/AArch64/AArch64Subtarget.h b/llvm/lib/Target/AArch64/AArch64Subtarget.h index 3eef2488067..52124f650c7 100644 --- a/llvm/lib/Target/AArch64/AArch64Subtarget.h +++ b/llvm/lib/Target/AArch64/AArch64Subtarget.h @@ -58,7 +58,12 @@ protected: AArch64FrameLowering FrameLowering; AArch64InstrInfo InstrInfo; AArch64SelectionDAGInfo TSInfo; - std::unique_ptr<AArch64TargetLowering> TLInfo; + AArch64TargetLowering TLInfo; +private: + /// initializeSubtargetDependencies - Initializes using CPUString and the + /// passed in feature string so that we can use initializer lists for + /// subtarget initialization. + AArch64Subtarget &initializeSubtargetDependencies(StringRef FS); public: /// This constructor initializes the data members to match that @@ -71,7 +76,7 @@ public: return &FrameLowering; } const AArch64TargetLowering *getTargetLowering() const { - return TLInfo.get(); + return &TLInfo; } const AArch64InstrInfo *getInstrInfo() const { return &InstrInfo; } const DataLayout *getDataLayout() const { return &DL; } |