From 60276e34479e61307968c371c4af247bedf30c8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20Gr=C3=B6n?= Date: Wed, 30 Dec 2020 18:53:32 +0100 Subject: C++17 compatibility: Don't use std::random_shuffle std::random_shuffle deprecated in C++14 and was removed in C++17. --- common/nextpnr.h | 14 ++++++++++---- common/placer_heap.cc | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/common/nextpnr.h b/common/nextpnr.h index f9376fea..5fa946e1 100644 --- a/common/nextpnr.h +++ b/common/nextpnr.h @@ -631,15 +631,21 @@ struct DeterministicRNG rng64(); } - template void shuffle(std::vector &a) + template void shuffle(const Iter& begin, const Iter& end) { - for (size_t i = 0; i != a.size(); i++) { - size_t j = i + rng(a.size() - i); + size_t size = end - begin; + for (size_t i = 0; i != size; i++) { + size_t j = i + rng(size - i); if (j > i) - std::swap(a[i], a[j]); + std::swap(*(begin + i), *(begin + j)); } } + template void shuffle(std::vector &a) + { + shuffle(a.begin(), a.end()); + } + template void sorted_shuffle(std::vector &a) { std::sort(a.begin(), a.end()); diff --git a/common/placer_heap.cc b/common/placer_heap.cc index 790c2230..908be49e 100644 --- a/common/placer_heap.cc +++ b/common/placer_heap.cc @@ -530,7 +530,7 @@ class HeAPPlacer available_bels[ctx->getBelType(bel)].push_back(bel); } for (auto &t : available_bels) { - std::random_shuffle(t.second.begin(), t.second.end(), [&](size_t n) { return ctx->rng(int(n)); }); + ctx->shuffle(t.second.begin(), t.second.end()); } for (auto cell : sorted(ctx->cells)) { CellInfo *ci = cell.second; -- cgit v1.2.3