This is an archive of the discontinued LLVM Phabricator instance.

[X86] Change std::sort to llvm::sort in response to r327219
ClosedPublic

Authored by mgrang on Mar 24 2018, 11:44 AM.

Details

Summary

r327219 added wrappers to std::sort which randomly shuffle the container before sorting.
This will help in uncovering non-determinism caused due to undefined sorting
order of objects having the same key.

To make use of that infrastructure we need to invoke llvm::sort instead of std::sort.

Note: This patch is one of a series of patches to replace *all* std::sort to llvm::sort.
Refer the comments section in D44363 for a list of all the required patches.

Diff Detail

Repository
rL LLVM

Event Timeline

mgrang created this revision.Mar 24 2018, 11:44 AM
craig.topper added inline comments.Mar 26 2018, 12:33 PM
lib/Target/X86/X86ISelLowering.cpp
11673 ↗(On Diff #139725)

I wonder if these would be better as array_pod_sort

This revision is now accepted and ready to land.Mar 26 2018, 12:59 PM
mgrang updated this revision to Diff 140573.Mar 31 2018, 8:38 PM

Changed std::sort to array_pod_sort for containers with pod keys, and llvm::sort for container with StringRef key.

mgrang added a comment.Apr 6 2018, 2:12 PM

@craig.topper I have changed the sort functions for pod containers to array_pod_sort. Could you please review?

craig.topper added inline comments.Apr 6 2018, 2:38 PM
lib/Target/X86/X86ISelLowering.cpp
38877 ↗(On Diff #140573)

StringRef should be pod so why did this need to change?

mgrang updated this revision to Diff 141470.Apr 6 2018, 6:36 PM
mgrang set the repository for this revision to rL LLVM.
mgrang added inline comments.
lib/Target/X86/X86ISelLowering.cpp
38877 ↗(On Diff #140573)

Seems to have been an oversight in replacing these. I have fixed it in my latest patch. Thanks!

This revision was automatically updated to reflect the committed changes.