[PATCH] D115391: Support: Avoid using SmallVector::set_size()
Duncan P. N. Exon Smith via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 8 13:11:33 PST 2021
dexonsmith created this revision.
Herald added a subscriber: hiraditya.
dexonsmith requested review of this revision.
Herald added a project: LLVM.
Update platform-independent code in Support to stop using
`SmallVector::set_size()`.
- For sys::path, descrease size using `truncate()` instead of `set_size()`.
- For zlib, replace two pairs of `reserve()` / `set_size()` with `resize_for_overwrite()` and `truncate()`.
See also Unix- and Windows-specific patches at:
- https://reviews.llvm.org/D115389
- https://reviews.llvm.org/D115390
Depends on https://reviews.llvm.org/D115383 or successor; blocker for https://reviews.llvm.org/D115380.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D115391
Files:
llvm/lib/Support/Compression.cpp
llvm/lib/Support/Path.cpp
Index: llvm/lib/Support/Path.cpp
===================================================================
--- llvm/lib/Support/Path.cpp
+++ llvm/lib/Support/Path.cpp
@@ -474,7 +474,7 @@
void remove_filename(SmallVectorImpl<char> &path, Style style) {
size_t end_pos = parent_path_end(StringRef(path.begin(), path.size()), style);
if (end_pos != StringRef::npos)
- path.set_size(end_pos);
+ path.truncate(end_pos);
}
void replace_extension(SmallVectorImpl<char> &path, const Twine &extension,
@@ -486,7 +486,7 @@
// Erase existing extension.
size_t pos = p.find_last_of('.');
if (pos != StringRef::npos && pos >= filename_pos(p, style))
- path.set_size(pos);
+ path.truncate(pos);
// Append '.' if needed.
if (ext.size() > 0 && ext[0] != '.')
Index: llvm/lib/Support/Compression.cpp
===================================================================
--- llvm/lib/Support/Compression.cpp
+++ llvm/lib/Support/Compression.cpp
@@ -49,14 +49,14 @@
Error zlib::compress(StringRef InputBuffer,
SmallVectorImpl<char> &CompressedBuffer, int Level) {
unsigned long CompressedSize = ::compressBound(InputBuffer.size());
- CompressedBuffer.reserve(CompressedSize);
+ CompressedBuffer.resize_for_overwrite(CompressedSize);
int Res =
::compress2((Bytef *)CompressedBuffer.data(), &CompressedSize,
(const Bytef *)InputBuffer.data(), InputBuffer.size(), Level);
// Tell MemorySanitizer that zlib output buffer is fully initialized.
// This avoids a false report when running LLVM with uninstrumented ZLib.
__msan_unpoison(CompressedBuffer.data(), CompressedSize);
- CompressedBuffer.set_size(CompressedSize);
+ CompressedBuffer.truncate(CompressedSize);
return Res ? createError(convertZlibCodeToString(Res)) : Error::success();
}
@@ -74,10 +74,10 @@
Error zlib::uncompress(StringRef InputBuffer,
SmallVectorImpl<char> &UncompressedBuffer,
size_t UncompressedSize) {
- UncompressedBuffer.reserve(UncompressedSize);
+ UncompressedBuffer.resize_for_overwrite(UncompressedSize);
Error E =
uncompress(InputBuffer, UncompressedBuffer.data(), UncompressedSize);
- UncompressedBuffer.set_size(UncompressedSize);
+ UncompressedBuffer.truncate(UncompressedSize);
return E;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D115391.392911.patch
Type: text/x-patch
Size: 2329 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211208/2698bab9/attachment.bin>
More information about the llvm-commits
mailing list