diff options
author | David Blaikie <dblaikie@gmail.com> | 2014-08-21 20:44:56 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2014-08-21 20:44:56 +0000 |
commit | 95ca0fb2474fbc79be19bde718096de4ae9df82f (patch) | |
tree | d1579c9ecdd297b2d88e01a6375920beea1bb57f /utils/FileCheck | |
parent | fdbf61d00d95d1fe27fbc7fb4e0b7b71e3aa929e (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.cpp | 37 |
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(); |