| Index: src/IceTargetLoweringX8664Traits.h
|
| diff --git a/src/IceTargetLoweringX8664Traits.h b/src/IceTargetLoweringX8664Traits.h
|
| index 4a1200415bc55cc2cb47782289e9212960facdc7..c2a9729dc4e05b6a51693969d1ebbd0f0256ef70 100644
|
| --- a/src/IceTargetLoweringX8664Traits.h
|
| +++ b/src/IceTargetLoweringX8664Traits.h
|
| @@ -406,13 +406,18 @@ template <> struct MachineTraits<TargetX8664> {
|
| REGX8664_TABLE
|
| #undef X
|
|
|
| - RandomNumberGeneratorWrapper RNG(Ctx->getRNG());
|
| + // Create a random number generator for regalloc randomization.
|
| + // Use function's sequence as the salt.
|
| + RandomNumberGenerator RNG(Ctx->getFlags().getRandomSeed(),
|
| + RS_RegAllocRandomization,
|
| + Func->getSequenceNumber());
|
| + RandomNumberGeneratorWrapper RNGW(RNG);
|
|
|
| // Shuffle the resulting equivalence classes.
|
| for (auto I : EquivalenceClasses) {
|
| const RegisterList &List = I.second;
|
| RegisterList Shuffled(List);
|
| - RandomShuffle(Shuffled.begin(), Shuffled.end(), RNG);
|
| + RandomShuffle(Shuffled.begin(), Shuffled.end(), RNGW);
|
| for (size_t SI = 0, SE = Shuffled.size(); SI < SE; ++SI) {
|
| Permutation[List[SI]] = Shuffled[SI];
|
| ++NumShuffled;
|
|
|