diff options
author | Mandeep Singh Grang <mgrang@codeaurora.org> | 2016-10-18 00:11:19 +0000 |
---|---|---|
committer | Mandeep Singh Grang <mgrang@codeaurora.org> | 2016-10-18 00:11:19 +0000 |
commit | e82678a65724887ba8352af4eadb969c4dd50a01 (patch) | |
tree | fef12ff9554f2466a95bcb1d547d309214b40e22 /llvm/lib/CodeGen/MachineScheduler.cpp | |
parent | 6ff82bd0ec7ddfd991cb8e57e2dfbf23f068c992 (diff) | |
download | bcm5719-llvm-e82678a65724887ba8352af4eadb969c4dd50a01.tar.gz bcm5719-llvm-e82678a65724887ba8352af4eadb969c4dd50a01.zip |
Fix differences in codegen between Linux and Windows toolchains
Summary:
There are differences in codegen between Linux and Windows due to:
1. Using std::sort which uses quicksort which is a non-stable sort.
2. Iterating over Set data structure where the iteration order is
non deterministic.
Reviewers: arsenm, grosbach, junbuml, zinob, MatzeB
Subscribers: MatzeB, wdng
Differential Revision: https://reviews.llvm.org/D25695
llvm-svn: 284441
Diffstat (limited to 'llvm/lib/CodeGen/MachineScheduler.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineScheduler.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/MachineScheduler.cpp b/llvm/lib/CodeGen/MachineScheduler.cpp index f431ee9ba00..a43277cb8dc 100644 --- a/llvm/lib/CodeGen/MachineScheduler.cpp +++ b/llvm/lib/CodeGen/MachineScheduler.cpp @@ -1359,7 +1359,8 @@ class BaseMemOpClusterMutation : public ScheduleDAGMutation { : SU(su), BaseReg(reg), Offset(ofs) {} bool operator<(const MemOpInfo&RHS) const { - return std::tie(BaseReg, Offset) < std::tie(RHS.BaseReg, RHS.Offset); + return std::tie(BaseReg, Offset, SU->NodeNum) < + std::tie(RHS.BaseReg, RHS.Offset, RHS.SU->NodeNum); } }; |