Fix non-deterministic behavior.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 5 Dec 2013 18:28:01 +0000 (18:28 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 5 Dec 2013 18:28:01 +0000 (18:28 +0000)
We use CSEBlocks to initialize a worklist:

SmallVector<BasicBlock *, 8> CSEWorkList(CSEBlocks.begin(), CSEBlocks.end());

so it must have a deterministic order.

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

lib/Transforms/Vectorize/SLPVectorizer.cpp

index 2af3701b9003105d8c2f0152069984943555a04c..aa75101c61b3ce7e5f7febb54b327b91849f0354 100644 (file)
@@ -521,7 +521,7 @@ private:
   /// Holds all of the instructions that we gathered.
   SetVector<Instruction *> GatherSeq;
   /// A list of blocks that we are going to CSE.
   /// Holds all of the instructions that we gathered.
   SetVector<Instruction *> GatherSeq;
   /// A list of blocks that we are going to CSE.
-  SmallSet<BasicBlock *, 8> CSEBlocks;
+  SetVector<BasicBlock *> CSEBlocks;
 
   /// Numbers instructions in different blocks.
   DenseMap<BasicBlock *, BlockNumbering> BlocksNumbers;
 
   /// Numbers instructions in different blocks.
   DenseMap<BasicBlock *, BlockNumbering> BlocksNumbers;