diff --git a/llvm/lib/Transforms/Scalar/GVNPRE.cpp b/llvm/lib/Transforms/Scalar/GVNPRE.cpp index 4f327663c1c7..2bedd1cdea59 100644 --- a/llvm/lib/Transforms/Scalar/GVNPRE.cpp +++ b/llvm/lib/Transforms/Scalar/GVNPRE.cpp @@ -420,13 +420,12 @@ bool GVNPRE::runOnFunction(Function &F) { s_ins, ExprLT()); anticIn.clear(); - std::insert_iterator > antic_ins(anticIn, - anticIn.begin()); - std::set_difference(S.begin(), S.end(), - generatedTemporaries[BB].begin(), - generatedTemporaries[BB].end(), - antic_ins, - ExprLT()); + + for (std::set::iterator I = S.begin(), E = S.end(); + I != E; ++I) { + if (generatedTemporaries[BB].find(*I) == generatedTemporaries[BB].end()) + anticIn.insert(*I); + } clean(VN, anticIn);