summaryrefslogtreecommitdiff
path: root/utils/FileCheck
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2014-08-21 20:44:56 +0000
committerDavid Blaikie <dblaikie@gmail.com>2014-08-21 20:44:56 +0000
commit95ca0fb2474fbc79be19bde718096de4ae9df82f (patch)
treed1579c9ecdd297b2d88e01a6375920beea1bb57f /utils/FileCheck
parentfdbf61d00d95d1fe27fbc7fb4e0b7b71e3aa929e (diff)
Explicitly pass ownership of the MemoryBuffer to AddNewSourceBuffer using std::unique_ptr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216223 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/FileCheck')
-rw-r--r--utils/FileCheck/FileCheck.cpp37
1 files changed, 19 insertions, 18 deletions
diff --git a/utils/FileCheck/FileCheck.cpp b/utils/FileCheck/FileCheck.cpp
index e8365fc248a..9203c4cf33c 100644
--- a/utils/FileCheck/FileCheck.cpp
+++ b/utils/FileCheck/FileCheck.cpp
@@ -636,8 +636,9 @@ struct CheckString {
///
/// \param PreserveHorizontal Don't squash consecutive horizontal whitespace
/// characters to a single space.
-static MemoryBuffer *CanonicalizeInputFile(std::unique_ptr<MemoryBuffer> MB,
- bool PreserveHorizontal) {
+static std::unique_ptr<MemoryBuffer>
+CanonicalizeInputFile(std::unique_ptr<MemoryBuffer> MB,
+ bool PreserveHorizontal) {
SmallString<128> NewFile;
NewFile.reserve(MB->getBufferSize());
@@ -662,8 +663,8 @@ static MemoryBuffer *CanonicalizeInputFile(std::unique_ptr<MemoryBuffer> MB,
++Ptr;
}
- return MemoryBuffer::getMemBufferCopy(NewFile.str(),
- MB->getBufferIdentifier());
+ return std::unique_ptr<MemoryBuffer>(
+ MemoryBuffer::getMemBufferCopy(NewFile.str(), MB->getBufferIdentifier()));
}
static bool IsPartOfWord(char c) {
@@ -838,25 +839,25 @@ static bool ReadCheckFile(SourceMgr &SM,
// If we want to canonicalize whitespace, strip excess whitespace from the
// buffer containing the CHECK lines. Remove DOS style line endings.
- MemoryBuffer *F = CanonicalizeInputFile(std::move(FileOrErr.get()),
- NoCanonicalizeWhiteSpace);
-
- SM.AddNewSourceBuffer(F, SMLoc());
+ std::unique_ptr<MemoryBuffer> F =
+ CanonicalizeInputFile(std::move(*FileOrErr), NoCanonicalizeWhiteSpace);
// Find all instances of CheckPrefix followed by : in the file.
StringRef Buffer = F->getBuffer();
+ SM.AddNewSourceBuffer(std::move(F), SMLoc());
+
std::vector<Pattern> ImplicitNegativeChecks;
for (const auto &PatternString : ImplicitCheckNot) {
// Create a buffer with fake command line content in order to display the
// command line option responsible for the specific implicit CHECK-NOT.
std::string Prefix = std::string("-") + ImplicitCheckNot.ArgStr + "='";
std::string Suffix = "'";
- MemoryBuffer *CmdLine = MemoryBuffer::getMemBufferCopy(
- Prefix + PatternString + Suffix, "command line");
+ std::unique_ptr<MemoryBuffer> CmdLine(MemoryBuffer::getMemBufferCopy(
+ Prefix + PatternString + Suffix, "command line"));
StringRef PatternInBuffer =
CmdLine->getBuffer().substr(Prefix.size(), PatternString.size());
- SM.AddNewSourceBuffer(CmdLine, SMLoc());
+ SM.AddNewSourceBuffer(std::move(CmdLine), SMLoc());
ImplicitNegativeChecks.push_back(Pattern(Check::CheckNot));
ImplicitNegativeChecks.back().ParsePattern(PatternInBuffer,
@@ -1272,18 +1273,18 @@ int main(int argc, char **argv) {
// Remove duplicate spaces in the input file if requested.
// Remove DOS style line endings.
- MemoryBuffer *F =
- CanonicalizeInputFile(std::move(File), NoCanonicalizeWhiteSpace);
-
- SM.AddNewSourceBuffer(F, SMLoc());
-
- /// VariableTable - This holds all the current filecheck variables.
- StringMap<StringRef> VariableTable;
+ std::unique_ptr<MemoryBuffer> F =
+ CanonicalizeInputFile(std::move(File), NoCanonicalizeWhiteSpace);
// Check that we have all of the expected strings, in order, in the input
// file.
StringRef Buffer = F->getBuffer();
+ SM.AddNewSourceBuffer(std::move(F), SMLoc());
+
+ /// VariableTable - This holds all the current filecheck variables.
+ StringMap<StringRef> VariableTable;
+
bool hasError = false;
unsigned i = 0, j = 0, e = CheckStrings.size();