From: Mandeep Singh Grang Date: Mon, 30 Oct 2017 19:42:41 +0000 (+0000) Subject: [GVNHoist] Fix non-deterministic sort order of PHIs for identical instructions X-Git-Tag: llvmorg-6.0.0-rc1~4563 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f83268bd9e2fd087d4396d3b63c87b2bd2641b68;p=platform%2Fupstream%2Fllvm.git [GVNHoist] Fix non-deterministic sort order of PHIs for identical instructions Summary: This fixes failure in Transforms/GVNHoist/hoist.ll uncovered by D39245. Reviewers: hiraditya, spop, dberlin Reviewed By: dberlin Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D39410 llvm-svn: 316949 --- diff --git a/llvm/lib/Transforms/Scalar/GVNHoist.cpp b/llvm/lib/Transforms/Scalar/GVNHoist.cpp index c13768d..d77ebdc 100644 --- a/llvm/lib/Transforms/Scalar/GVNHoist.cpp +++ b/llvm/lib/Transforms/Scalar/GVNHoist.cpp @@ -703,7 +703,7 @@ private: // Vector of PHIs contains PHIs for different instructions. // Sort the args according to their VNs, such that identical // instructions are together. - std::sort(CHIs.begin(), CHIs.end(), cmpVN); + std::stable_sort(CHIs.begin(), CHIs.end(), cmpVN); auto TI = BB->getTerminator(); auto B = CHIs.begin(); // [PreIt, PHIIt) form a range of CHIs which have identical VNs.