[all-commits] [llvm/llvm-project] 87ff34: Stabilize alloca slices sort in SROA
Stanislav Mekhanoshin via All-commits
all-commits at lists.llvm.org
Mon Jun 8 14:25:49 PDT 2020
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: 87ff3401eb103d8dbb632466fd9a9762d698f223
https://github.com/llvm/llvm-project/commit/87ff3401eb103d8dbb632466fd9a9762d698f223
Author: Stanislav Mekhanoshin <Stanislav.Mekhanoshin at amd.com>
Date: 2020-06-08 (Mon, 08 Jun 2020)
Changed paths:
M llvm/lib/Transforms/Scalar/SROA.cpp
M llvm/test/Transforms/SROA/phi-gep.ll
Log Message:
-----------
Stabilize alloca slices sort in SROA
Slice::operator<() has a non-deterministic behavior. If we have
identical slices comparison will depend on the order or operands.
Normally that does not result in unstable compilation results
because the order in which slices are inserted into the vector
is deterministic and llvm::sort() normally behaves as a stable
sort, although that is not guaranteed.
However, there is test option -sroa-random-shuffle-slices which
is used to check exactly this aspect. The vector is first randomly
shuffled and then sorted. The same shuffling happens without this
option under expensive llvm checks.
I have managed to write a test which has hit this problem.
There are no fields in the Slice class to resolve the instability.
We only have offsets, IsSplittable and Use, but neither Use nor
User have anything suitable for predictable comparison.
I have switched to stable_sort which has to be sufficient and
removed that randon shuffle option.
Differential Revision: https://reviews.llvm.org/D81310
More information about the All-commits
mailing list