[llvm] r228398 - IRCE: Demote template to ArrayRef and SmallVector to array.

Benjamin Kramer benny.kra at googlemail.com
Fri Feb 6 06:43:49 PST 2015


Author: d0k
Date: Fri Feb  6 08:43:49 2015
New Revision: 228398

URL: http://llvm.org/viewvc/llvm-project?rev=228398&view=rev
Log:
IRCE: Demote template to ArrayRef and SmallVector to array.

NFC.

Modified:
    llvm/trunk/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp

Modified: llvm/trunk/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp?rev=228398&r1=228397&r2=228398&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp Fri Feb  6 08:43:49 2015
@@ -569,10 +569,8 @@ class LoopConstrainer {
   // Even though we do not preserve any passes at this time, we at least need to
   // keep the parent loop structure consistent.  The `LPPassManager' seems to
   // verify this after running a loop pass.  This function adds the list of
-  // blocks denoted by the iterator range [BlocksBegin, BlocksEnd) to this loops
-  // parent loop if required.
-  template<typename IteratorTy>
-  void addToParentLoopIfNeeded(IteratorTy BlocksBegin, IteratorTy BlocksEnd);
+  // blocks denoted by BBs to this loops parent loop if required.
+  void addToParentLoopIfNeeded(ArrayRef<BasicBlock *> BBs);
 
   // Some global state.
   Function &F;
@@ -1009,15 +1007,13 @@ LoopConstrainer::createPreheader(const L
   return Preheader;
 }
 
-template<typename IteratorTy>
-void LoopConstrainer::addToParentLoopIfNeeded(IteratorTy Begin,
-                                              IteratorTy End) {
+void LoopConstrainer::addToParentLoopIfNeeded(ArrayRef<BasicBlock *> BBs) {
   Loop *ParentLoop = OriginalLoop.getParentLoop();
   if (!ParentLoop)
     return;
 
-  for (; Begin != End; Begin++)
-    ParentLoop->addBasicBlockToLoop(*Begin, OriginalLoopInfo);
+  for (BasicBlock *BB : BBs)
+    ParentLoop->addBasicBlockToLoop(BB, OriginalLoopInfo);
 }
 
 bool LoopConstrainer::run() {
@@ -1082,27 +1078,20 @@ bool LoopConstrainer::run() {
                                  PostLoopRRI);
   }
 
-  SmallVector<BasicBlock *, 6> NewBlocks;
-  NewBlocks.push_back(PostLoopPreheader);
-  NewBlocks.push_back(PreLoopRRI.PseudoExit);
-  NewBlocks.push_back(PreLoopRRI.ExitSelector);
-  NewBlocks.push_back(PostLoopRRI.PseudoExit);
-  NewBlocks.push_back(PostLoopRRI.ExitSelector);
-  if (MainLoopPreheader != Preheader)
-    NewBlocks.push_back(MainLoopPreheader);
+  BasicBlock *NewMainLoopPreheader =
+      MainLoopPreheader != Preheader ? MainLoopPreheader : nullptr;
+  BasicBlock *NewBlocks[] = {PostLoopPreheader,        PreLoopRRI.PseudoExit,
+                             PreLoopRRI.ExitSelector,  PostLoopRRI.PseudoExit,
+                             PostLoopRRI.ExitSelector, NewMainLoopPreheader};
 
   // Some of the above may be nullptr, filter them out before passing to
   // addToParentLoopIfNeeded.
-  auto NewBlocksEnd = std::remove(NewBlocks.begin(), NewBlocks.end(), nullptr);
+  auto NewBlocksEnd =
+      std::remove(std::begin(NewBlocks), std::end(NewBlocks), nullptr);
 
-  typedef SmallVector<BasicBlock *, 6>::iterator SmallVectItTy;
-  typedef std::vector<BasicBlock *>::iterator StdVectItTy;
-
-  addToParentLoopIfNeeded<SmallVectItTy>(NewBlocks.begin(), NewBlocksEnd);
-  addToParentLoopIfNeeded<StdVectItTy>(PreLoop.Blocks.begin(),
-                                       PreLoop.Blocks.end());
-  addToParentLoopIfNeeded<StdVectItTy>(PostLoop.Blocks.begin(),
-                                       PostLoop.Blocks.end());
+  addToParentLoopIfNeeded(makeArrayRef(std::begin(NewBlocks), NewBlocksEnd));
+  addToParentLoopIfNeeded(PreLoop.Blocks);
+  addToParentLoopIfNeeded(PostLoop.Blocks);
 
   return true;
 }





More information about the llvm-commits mailing list