diff options
author | Daniel R. Carvalho <odanrc@yahoo.com.br> | 2019-10-31 11:54:42 +0100 |
---|---|---|
committer | Daniel Carvalho <odanrc@yahoo.com.br> | 2019-11-04 21:32:22 +0000 |
commit | 0a276fb4bb41f43ada306248e3d9a80e0a7e8140 (patch) | |
tree | 3e00e9b286e5c19f4e2f4713322c9142f1f626da /src/mem | |
parent | b7223e0976dddc797babc6cbcaa44aa42ecca4f9 (diff) | |
download | gem5-0a276fb4bb41f43ada306248e3d9a80e0a7e8140.tar.xz |
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 <odanrc@yahoo.com.br>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/22403
Tested-by: kokoro <noreply+kokoro@google.com>
Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Diffstat (limited to 'src/mem')
-rw-r--r-- | src/mem/cache/compressors/dictionary_compressor_impl.hh | 7 |
1 files 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 <class T> std::unique_ptr<BaseCacheCompressor::CompressionData> DictionaryCompressor<T>::compress(const uint64_t* data) { - std::unique_ptr<CompData> comp_data = + std::unique_ptr<BaseCacheCompressor::CompressionData> comp_data = std::unique_ptr<CompData>(new CompData()); // Reset dictionary resetDictionary(); // Compress every value sequentially + CompData* const comp_data_ptr = static_cast<CompData*>(comp_data.get()); const std::vector<T> values((T*)data, (T*)data + blkSize / sizeof(T)); for (const auto& value : values) { std::unique_ptr<Pattern> 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 <class T> |