From b953e9060e282442d04ae0b8725eaa4d851983db Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Fri, 1 May 2020 15:39:55 +0200 Subject: [PATCH] [Bitcode] reserve in front of push_back loops. NFCI. --- llvm/lib/Bitstream/Reader/BitstreamReader.cpp | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/llvm/lib/Bitstream/Reader/BitstreamReader.cpp b/llvm/lib/Bitstream/Reader/BitstreamReader.cpp index 92d7c91..2739137 100644 --- a/llvm/lib/Bitstream/Reader/BitstreamReader.cpp +++ b/llvm/lib/Bitstream/Reader/BitstreamReader.cpp @@ -214,6 +214,7 @@ Expected BitstreamCursor::readRecord(unsigned AbbrevID, if (!MaybeNumElts) return MaybeNumElts.takeError(); uint32_t NumElts = MaybeNumElts.get(); + Vals.reserve(Vals.size() + NumElts); for (unsigned i = 0; i != NumElts; ++i) if (Expected MaybeVal = ReadVBR64(6)) @@ -263,6 +264,7 @@ Expected BitstreamCursor::readRecord(unsigned AbbrevID, if (!MaybeNumElts) return MaybeNumElts.takeError(); uint32_t NumElts = MaybeNumElts.get(); + Vals.reserve(Vals.size() + NumElts); // Get the element encoding. if (i + 2 != e) @@ -334,8 +336,8 @@ Expected BitstreamCursor::readRecord(unsigned AbbrevID, *Blob = StringRef(Ptr, NumElts); } else { // Otherwise, unpack into Vals with zero extension. - for (; NumElts; --NumElts) - Vals.push_back((unsigned char)*Ptr++); + auto *UPtr = reinterpret_cast(Ptr); + Vals.append(UPtr, UPtr + NumElts); } } @@ -458,21 +460,15 @@ BitstreamCursor::ReadBlockInfoBlock(bool ReadBlockInfoNames) { return None; if (!ReadBlockInfoNames) break; // Ignore name. - std::string Name; - for (unsigned i = 0, e = Record.size(); i != e; ++i) - Name += (char)Record[i]; - CurBlockInfo->Name = Name; + CurBlockInfo->Name = std::string(Record.begin(), Record.end()); break; } case bitc::BLOCKINFO_CODE_SETRECORDNAME: { if (!CurBlockInfo) return None; if (!ReadBlockInfoNames) break; // Ignore name. - std::string Name; - for (unsigned i = 1, e = Record.size(); i != e; ++i) - Name += (char)Record[i]; - CurBlockInfo->RecordNames.push_back(std::make_pair((unsigned)Record[0], - Name)); + CurBlockInfo->RecordNames.emplace_back( + (unsigned)Record[0], std::string(Record.begin() + 1, Record.end())); break; } } -- 2.7.4