LoopVectorize: Make iteration over induction variables not depend on pointer values.
authorBenjamin Kramer <benny.kra@googlemail.com>
Wed, 19 Dec 2012 11:09:15 +0000 (11:09 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Wed, 19 Dec 2012 11:09:15 +0000 (11:09 +0000)
MapVector is a bit heavyweight, but I don't see a simpler way. Also the
InductionList is unlikely to be large. This should help 3-stage selfhost
compares (PR14647).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170528 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Vectorize/LoopVectorize.h

index e5ef29052e256fb0dfa93caca096190273e52f26..cae1093a5584c05a6ef7844147a274495bf42649 100644 (file)
 #define LV_NAME "loop-vectorize"
 #define DEBUG_TYPE LV_NAME
 
-#include "llvm/Analysis/ScalarEvolution.h"
-#include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/DenseMap.h"
+#include "llvm/ADT/MapVector.h"
 #include "llvm/ADT/SmallPtrSet.h"
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/Analysis/ScalarEvolution.h"
 #include "llvm/IRBuilder.h" 
-
 #include <algorithm>
 using namespace llvm;
 
@@ -304,7 +304,7 @@ public:
 
   /// InductionList saves induction variables and maps them to the
   /// induction descriptor.
-  typedef DenseMap<PHINode*, InductionInfo> InductionList;
+  typedef MapVector<PHINode*, InductionInfo> InductionList;
 
   /// Returns true if it is legal to vectorize this loop.
   /// This does not mean that it is profitable to vectorize this