summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Christopher <echristo@gmail.com>2014-06-11 00:46:34 +0000
committerEric Christopher <echristo@gmail.com>2014-06-11 00:46:34 +0000
commit7c9d4e058a671c8abf2c49bf3fe49aff3d91ca1f (patch)
tree4d64c0a37796a18d018a31deb1903b07bb84c117
parentd88b44d4447946a149b7d6b22fc7a1f7962640bd (diff)
downloadbcm5719-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.cpp22
-rw-r--r--llvm/lib/Target/AArch64/AArch64Subtarget.h9
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; }
OpenPOWER on IntegriCloud