[llvm] r280342 - [SimplifyCFG] Fix nondeterministic iteration order

James Molloy via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 1 02:01:34 PDT 2016


Author: jamesm
Date: Thu Sep  1 04:01:34 2016
New Revision: 280342

URL: http://llvm.org/viewvc/llvm-project?rev=280342&view=rev
Log:
[SimplifyCFG] Fix nondeterministic iteration order

We iterate over the result from SafeToMergeTerminators, so make it a SmallSetVector instead of a SmallPtrSet.

Should fix stage3 convergence builds.

Modified:
    llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp

Modified: llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp?rev=280342&r1=280341&r2=280342&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp (original)
+++ llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp Thu Sep  1 04:01:34 2016
@@ -176,7 +176,7 @@ public:
 /// terminator instructions together.
 static bool
 SafeToMergeTerminators(TerminatorInst *SI1, TerminatorInst *SI2,
-                       SmallPtrSetImpl<BasicBlock *> *FailBlocks = nullptr) {
+                       SmallSetVector<BasicBlock *, 4> *FailBlocks = nullptr) {
   if (SI1 == SI2)
     return false; // Can't merge with self!
 
@@ -961,7 +961,7 @@ bool SimplifyCFGOpt::FoldValueComparison
     Value *PCV = isValueEqualityComparison(PTI); // PredCondVal
 
     if (PCV == CV && TI != PTI) {
-      SmallPtrSet<BasicBlock*, 4> FailBlocks;
+      SmallSetVector<BasicBlock*, 4> FailBlocks;
       if (!SafeToMergeTerminators(TI, PTI, &FailBlocks)) {
         for (auto *Succ : FailBlocks) {
           std::vector<BasicBlock*> Blocks = { TI->getParent() };




More information about the llvm-commits mailing list