summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
diff options
context:
space:
mode:
authorJustin Lebar <jlebar@google.com>2016-07-19 23:19:16 +0000
committerJustin Lebar <jlebar@google.com>2016-07-19 23:19:16 +0000
commit4ee8a2d024a8204aee1c1e8a4dd0b253545d6fea (patch)
tree8622484cb4e2f7b0c3ca1000e6704abb9de826c7 /llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
parentd9446d3770ec2ec664f72f01f6eba17407475414 (diff)
downloadbcm5719-llvm-4ee8a2d024a8204aee1c1e8a4dd0b253545d6fea.tar.gz
bcm5719-llvm-4ee8a2d024a8204aee1c1e8a4dd0b253545d6fea.zip
[LSV] Nix two global (ish) variables in the LoadStoreVectorizer. NFC
Reviewers: asbirlea Subscribers: mzolotukhin, llvm-commits, arsenm Differential Revision: https://reviews.llvm.org/D22532 llvm-svn: 276054
Diffstat (limited to 'llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp')
-rw-r--r--llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp22
1 files changed, 12 insertions, 10 deletions
diff --git a/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp b/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
index c8906bde15e..941699a005e 100644
--- a/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
+++ b/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
@@ -43,10 +43,10 @@ namespace {
// TODO: Remove this
static const unsigned TargetBaseAlign = 4;
-class Vectorizer {
- typedef SmallVector<Value *, 8> ValueList;
- typedef MapVector<Value *, ValueList> ValueListMap;
+typedef SmallVector<Value *, 8> ValueList;
+typedef MapVector<Value *, ValueList> ValueListMap;
+class Vectorizer {
Function &F;
AliasAnalysis &AA;
DominatorTree &DT;
@@ -54,8 +54,6 @@ class Vectorizer {
TargetTransformInfo &TTI;
const DataLayout &DL;
IRBuilder<> Builder;
- ValueListMap StoreRefs;
- ValueListMap LoadRefs;
public:
Vectorizer(Function &F, AliasAnalysis &AA, DominatorTree &DT,
@@ -115,7 +113,7 @@ private:
BasicBlock::iterator To);
/// Collects load and store instructions to vectorize.
- void collectInstructions(BasicBlock *BB);
+ std::pair<ValueListMap, ValueListMap> collectInstructions(BasicBlock *BB);
/// Processes the collected instructions, the \p Map. The elements of \p Map
/// should be all loads or all stores.
@@ -198,7 +196,8 @@ bool Vectorizer::run() {
// Scan the blocks in the function in post order.
for (BasicBlock *BB : post_order(&F)) {
- collectInstructions(BB);
+ ValueListMap LoadRefs, StoreRefs;
+ std::tie(LoadRefs, StoreRefs) = collectInstructions(BB);
Changed |= vectorizeChains(LoadRefs);
Changed |= vectorizeChains(StoreRefs);
}
@@ -493,9 +492,10 @@ unsigned Vectorizer::getVectorizablePrefixEndIdx(ArrayRef<Value *> Chain,
return Chain.size();
}
-void Vectorizer::collectInstructions(BasicBlock *BB) {
- LoadRefs.clear();
- StoreRefs.clear();
+std::pair<ValueListMap, ValueListMap>
+Vectorizer::collectInstructions(BasicBlock *BB) {
+ ValueListMap LoadRefs;
+ ValueListMap StoreRefs;
for (Instruction &I : *BB) {
if (!I.mayReadOrWriteMemory())
@@ -569,6 +569,8 @@ void Vectorizer::collectInstructions(BasicBlock *BB) {
StoreRefs[ObjPtr].push_back(SI);
}
}
+
+ return {LoadRefs, StoreRefs};
}
bool Vectorizer::vectorizeChains(ValueListMap &Map) {
OpenPOWER on IntegriCloud