[ADT] Shuffle containers before sorting to uncover non-deterministic behavior
authorMandeep Singh Grang <mgrang@codeaurora.org>
Sat, 10 Mar 2018 18:59:14 +0000 (18:59 +0000)
committerMandeep Singh Grang <mgrang@codeaurora.org>
Sat, 10 Mar 2018 18:59:14 +0000 (18:59 +0000)
commit5a3d47fabcb66535e48ce50b6f9b12f88bd1b28d
tree1f0c54a96f981419eeaafdfeb70b52c30eb720bb
parentff1248f82f582f802dcb67447ba697f033f322c6
[ADT] Shuffle containers before sorting to uncover non-deterministic behavior

Summary:
std::sort and array_pod_sort both use non-stable sorting algorithms.
This means that the relative order of elements with the same key is
undefined. This patch is an attempt to uncover such scenarios by
randomly shuffling all containers before sorting, if EXPENSIVE_CHECKS
is enabled.

Here's the bugzilla for this: https://bugs.llvm.org/show_bug.cgi?id=35135

Reviewers: dblaikie, dexonsmith, chandlerc, efriedma, RKSimon

Reviewed By: RKSimon

Subscribers: fhahn, davide, RKSimon, vsk, mgorny, llvm-commits

Differential Revision: https://reviews.llvm.org/D39245

llvm-svn: 327219
llvm/include/llvm/ADT/STLExtras.h