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).

llvm-svn: 170528

llvm/lib/Transforms/Vectorize/LoopVectorize.h

index e5ef290..cae1093 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