From f83268bd9e2fd087d4396d3b63c87b2bd2641b68 Mon Sep 17 00:00:00 2001 From: Mandeep Singh Grang Date: Mon, 30 Oct 2017 19:42:41 +0000 Subject: [PATCH] [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 --- llvm/lib/Transforms/Scalar/GVNHoist.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/lib/Transforms/Scalar/GVNHoist.cpp b/llvm/lib/Transforms/Scalar/GVNHoist.cpp index c13768d38f6e8..d77ebdcd97536 100644 --- a/llvm/lib/Transforms/Scalar/GVNHoist.cpp +++ b/llvm/lib/Transforms/Scalar/GVNHoist.cpp @@ -703,7 +703,7 @@ class GVNHoist { // 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.