[llvm] r312156 - [GVNSink] Remove dependency on SmallPtrSet iteration order.

Benjamin Kramer via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 30 11:46:37 PDT 2017


Author: d0k
Date: Wed Aug 30 11:46:37 2017
New Revision: 312156

URL: http://llvm.org/viewvc/llvm-project?rev=312156&view=rev
Log:
[GVNSink] Remove dependency on SmallPtrSet iteration order.

Found by LLVM_ENABLE_REVERSE_ITERATION.

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

Modified: llvm/trunk/lib/Transforms/Scalar/GVNSink.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/GVNSink.cpp?rev=312156&r1=312155&r2=312156&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/GVNSink.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/GVNSink.cpp Wed Aug 30 11:46:37 2017
@@ -229,12 +229,14 @@ public:
   ModelledPHI(const VArray &V, const BArray &B) {
     std::copy(V.begin(), V.end(), std::back_inserter(Values));
     std::copy(B.begin(), B.end(), std::back_inserter(Blocks));
+    std::sort(Blocks.begin(), Blocks.end());
   }
 
   /// Create a PHI from [I[OpNum] for I in Insts].
   template <typename BArray>
   ModelledPHI(ArrayRef<Instruction *> Insts, unsigned OpNum, const BArray &B) {
     std::copy(B.begin(), B.end(), std::back_inserter(Blocks));
+    std::sort(Blocks.begin(), Blocks.end());
     for (auto *I : Insts)
       Values.push_back(I->getOperand(OpNum));
   }




More information about the llvm-commits mailing list