From 0a276fb4bb41f43ada306248e3d9a80e0a7e8140 Mon Sep 17 00:00:00 2001 From: "Daniel R. Carvalho" Date: Thu, 31 Oct 2019 11:54:42 +0100 Subject: [PATCH] mem-cache: Modify compressor to appease newer compilers The type of the local unique_ptr variable was different from the return type. In C++11 because of such difference, a copy-ellision would not be possible, and that required the use of a std::move. In C++14 the restriction of same types being required was removed, so std::move would not be needed anymore. With the addition of the -Wredundant-move warning in newer compilers, having the std::move on the return became an issue, breaking compilation. Change-Id: I45d18dfc500bb5db5fe360814feb91853c735a19 Signed-off-by: Daniel R. Carvalho Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/22403 Tested-by: kokoro Maintainer: Nikos Nikoleris Reviewed-by: Nikos Nikoleris --- src/mem/cache/compressors/dictionary_compressor_impl.hh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/mem/cache/compressors/dictionary_compressor_impl.hh b/src/mem/cache/compressors/dictionary_compressor_impl.hh index 66827d774..49324021b 100644 --- a/src/mem/cache/compressors/dictionary_compressor_impl.hh +++ b/src/mem/cache/compressors/dictionary_compressor_impl.hh @@ -117,23 +117,24 @@ template std::unique_ptr DictionaryCompressor::compress(const uint64_t* data) { - std::unique_ptr comp_data = + std::unique_ptr comp_data = std::unique_ptr(new CompData()); // Reset dictionary resetDictionary(); // Compress every value sequentially + CompData* const comp_data_ptr = static_cast(comp_data.get()); const std::vector values((T*)data, (T*)data + blkSize / sizeof(T)); for (const auto& value : values) { std::unique_ptr pattern = compressValue(value); DPRINTF(CacheComp, "Compressed %016x to %s\n", value, pattern->print()); - comp_data->addEntry(std::move(pattern)); + comp_data_ptr->addEntry(std::move(pattern)); } // Return compressed line - return std::move(comp_data); + return comp_data; } template -- 2.30.2