From 4ee8a2d024a8204aee1c1e8a4dd0b253545d6fea Mon Sep 17 00:00:00 2001 From: Justin Lebar Date: Tue, 19 Jul 2016 23:19:16 +0000 Subject: [PATCH] [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 --- .../Vectorize/LoadStoreVectorizer.cpp | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp b/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp index c8906bde15e0..941699a005e9 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 ValueList; - typedef MapVector ValueListMap; +typedef SmallVector ValueList; +typedef MapVector 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 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 Chain, return Chain.size(); } -void Vectorizer::collectInstructions(BasicBlock *BB) { - LoadRefs.clear(); - StoreRefs.clear(); +std::pair +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) {