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>
This commit is contained in:
committed by
Daniel Carvalho
parent
b7223e0976
commit
0a276fb4bb
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user