From e290e4abc3b926297bfbaf69533c680a4bd36b48 Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Wed, 11 Jun 2014 00:46:34 +0000 Subject: [PATCH] Move to a private function to initialize the subtarget dependencies so that we can use initializer lists for the AArch64 Subtarget. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210616 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/AArch64/AArch64Subtarget.cpp | 22 +++++++++++++--------- lib/Target/AArch64/AArch64Subtarget.h | 9 +++++++-- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/lib/Target/AArch64/AArch64Subtarget.cpp b/lib/Target/AArch64/AArch64Subtarget.cpp index a1e8b87ed9c..bb0b72c585b 100644 --- a/lib/Target/AArch64/AArch64Subtarget.cpp +++ b/lib/Target/AArch64/AArch64Subtarget.cpp @@ -30,6 +30,17 @@ static cl::opt 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(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/lib/Target/AArch64/AArch64Subtarget.h b/lib/Target/AArch64/AArch64Subtarget.h index 3eef2488067..52124f650c7 100644 --- a/lib/Target/AArch64/AArch64Subtarget.h +++ b/lib/Target/AArch64/AArch64Subtarget.h @@ -58,7 +58,12 @@ protected: AArch64FrameLowering FrameLowering; AArch64InstrInfo InstrInfo; AArch64SelectionDAGInfo TSInfo; - std::unique_ptr 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; } -- 2.34.1