From: David Blaikie Date: Fri, 29 Aug 2014 07:59:55 +0000 (+0000) Subject: unique_ptrify SourceManager::createFileID X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f6983668b46c796d294bfacb00d7bbe25a6e4084;p=clang unique_ptrify SourceManager::createFileID git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216715 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/SourceManager.h b/include/clang/Basic/SourceManager.h index 8addde9d15..d5426c18da 100644 --- a/include/clang/Basic/SourceManager.h +++ b/include/clang/Basic/SourceManager.h @@ -205,10 +205,10 @@ namespace SrcMgr { /// this content cache. This is used for performance analysis. llvm::MemoryBuffer::BufferKind getMemoryBufferKind() const; - void setBuffer(llvm::MemoryBuffer *B) { + void setBuffer(std::unique_ptr B) { assert(!Buffer.getPointer() && "MemoryBuffer already set."); - Buffer.setPointer(B); - Buffer.setInt(false); + Buffer.setPointer(B.release()); + Buffer.setInt(0); } /// \brief Get the underlying buffer, returning NULL if the buffer is not @@ -788,12 +788,12 @@ public: /// /// This does no caching of the buffer and takes ownership of the /// MemoryBuffer, so only pass a MemoryBuffer to this once. - FileID createFileID(llvm::MemoryBuffer *Buffer, + FileID createFileID(std::unique_ptr Buffer, SrcMgr::CharacteristicKind FileCharacter = SrcMgr::C_User, int LoadedID = 0, unsigned LoadedOffset = 0, SourceLocation IncludeLoc = SourceLocation()) { - return createFileID(createMemBufferContentCache(Buffer), IncludeLoc, - FileCharacter, LoadedID, LoadedOffset); + return createFileID(createMemBufferContentCache(std::move(Buffer)), + IncludeLoc, FileCharacter, LoadedID, LoadedOffset); } /// \brief Return a new SourceLocation that encodes the @@ -1627,7 +1627,7 @@ private: /// \brief Create a new ContentCache for the specified memory buffer. const SrcMgr::ContentCache * - createMemBufferContentCache(llvm::MemoryBuffer *Buf); + createMemBufferContentCache(std::unique_ptr Buf); FileID getFileIDSlow(unsigned SLocOffset) const; FileID getFileIDLocal(unsigned SLocOffset) const; diff --git a/lib/AST/ASTImporter.cpp b/lib/AST/ASTImporter.cpp index aed359b0b3..05f39abaa3 100644 --- a/lib/AST/ASTImporter.cpp +++ b/lib/AST/ASTImporter.cpp @@ -4922,7 +4922,7 @@ FileID ASTImporter::Import(FileID FromID) { std::unique_ptr ToBuf = llvm::MemoryBuffer::getMemBufferCopy(FromBuf->getBuffer(), FromBuf->getBufferIdentifier()); - ToID = ToSM.createFileID(ToBuf.release(), + ToID = ToSM.createFileID(std::move(ToBuf), FromSLoc.getFile().getFileCharacteristic()); } diff --git a/lib/Basic/SourceManager.cpp b/lib/Basic/SourceManager.cpp index 47142e238e..0d47b09410 100644 --- a/lib/Basic/SourceManager.cpp +++ b/lib/Basic/SourceManager.cpp @@ -456,13 +456,13 @@ SourceManager::getOrCreateContentCache(const FileEntry *FileEnt, /// createMemBufferContentCache - Create a new ContentCache for the specified /// memory buffer. This does no caching. -const ContentCache * -SourceManager::createMemBufferContentCache(llvm::MemoryBuffer *Buffer) { +const ContentCache *SourceManager::createMemBufferContentCache( + std::unique_ptr Buffer) { // Add a new ContentCache to the MemBufferInfos list and return it. ContentCache *Entry = ContentCacheAlloc.Allocate(); new (Entry) ContentCache(); MemBufferInfos.push_back(Entry); - Entry->setBuffer(Buffer); + Entry->setBuffer(std::move(Buffer)); return Entry; } diff --git a/lib/CodeGen/CodeGenAction.cpp b/lib/CodeGen/CodeGenAction.cpp index fe46fc78d1..1d81900acc 100644 --- a/lib/CodeGen/CodeGenAction.cpp +++ b/lib/CodeGen/CodeGenAction.cpp @@ -277,7 +277,7 @@ static FullSourceLoc ConvertBackendLocation(const llvm::SMDiagnostic &D, llvm::MemoryBuffer::getMemBufferCopy(LBuf->getBuffer(), LBuf->getBufferIdentifier()); // FIXME: Keep a file ID map instead of creating new IDs for each location. - FileID FID = CSM.createFileID(CBuf.release()); + FileID FID = CSM.createFileID(std::move(CBuf)); // Translate the offset into the file. unsigned Offset = D.getLoc().getPointer() - LBuf->getBufferStart(); diff --git a/lib/Frontend/CompilerInstance.cpp b/lib/Frontend/CompilerInstance.cpp index 4cba26cc63..513a43c140 100644 --- a/lib/Frontend/CompilerInstance.cpp +++ b/lib/Frontend/CompilerInstance.cpp @@ -700,7 +700,8 @@ bool CompilerInstance::InitializeSourceManager(const FrontendInputFile &Input, Kind = Input.isSystem() ? SrcMgr::C_System : SrcMgr::C_User; if (Input.isBuffer()) { - SourceMgr.setMainFileID(SourceMgr.createFileID(Input.getBuffer(), Kind)); + SourceMgr.setMainFileID(SourceMgr.createFileID( + std::unique_ptr(Input.getBuffer()), Kind)); assert(!SourceMgr.getMainFileID().isInvalid() && "Couldn't establish MainFileID!"); return true; diff --git a/lib/Lex/Preprocessor.cpp b/lib/Lex/Preprocessor.cpp index 1dd46b0de9..faf5bbb38b 100644 --- a/lib/Lex/Preprocessor.cpp +++ b/lib/Lex/Preprocessor.cpp @@ -506,7 +506,7 @@ void Preprocessor::EnterMainSourceFile() { std::unique_ptr SB = llvm::MemoryBuffer::getMemBufferCopy(Predefines, ""); assert(SB && "Cannot create predefined source buffer"); - FileID FID = SourceMgr.createFileID(SB.release()); + FileID FID = SourceMgr.createFileID(std::move(SB)); assert(!FID.isInvalid() && "Could not create FileID for predefines?"); setPredefinesFileID(FID); diff --git a/lib/Lex/ScratchBuffer.cpp b/lib/Lex/ScratchBuffer.cpp index f779d3cd26..3bac8891c6 100644 --- a/lib/Lex/ScratchBuffer.cpp +++ b/lib/Lex/ScratchBuffer.cpp @@ -67,7 +67,7 @@ void ScratchBuffer::AllocScratchBuffer(unsigned RequestLen) { std::unique_ptr OwnBuf = llvm::MemoryBuffer::getNewMemBuffer(RequestLen, ""); llvm::MemoryBuffer &Buf = *OwnBuf; - FileID FID = SourceMgr.createFileID(OwnBuf.release()); + FileID FID = SourceMgr.createFileID(std::move(OwnBuf)); BufferStartLoc = SourceMgr.getLocForStartOfFile(FID); CurBuffer = const_cast(Buf.getBufferStart()); BytesUsed = 1; diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp index b65b5641ad..5b0aa1484b 100644 --- a/lib/Serialization/ASTReader.cpp +++ b/lib/Serialization/ASTReader.cpp @@ -1253,7 +1253,7 @@ bool ASTReader::ReadSLocEntry(int ID) { std::unique_ptr Buffer = llvm::MemoryBuffer::getMemBuffer(Blob.drop_back(1), Name); - SourceMgr.createFileID(Buffer.release(), FileCharacter, ID, + SourceMgr.createFileID(std::move(Buffer), FileCharacter, ID, BaseOffset + Offset, IncludeLoc); break; } diff --git a/unittests/AST/CommentLexer.cpp b/unittests/AST/CommentLexer.cpp index 7cac1eaaf1..77ee22ffb4 100644 --- a/unittests/AST/CommentLexer.cpp +++ b/unittests/AST/CommentLexer.cpp @@ -61,7 +61,7 @@ protected: void CommentLexerTest::lexString(const char *Source, std::vector &Toks) { std::unique_ptr Buf = MemoryBuffer::getMemBuffer(Source); - FileID File = SourceMgr.createFileID(Buf.release()); + FileID File = SourceMgr.createFileID(std::move(Buf)); SourceLocation Begin = SourceMgr.getLocForStartOfFile(File); Lexer L(Allocator, Diags, Traits, Begin, Source, Source + strlen(Source)); diff --git a/unittests/AST/CommentParser.cpp b/unittests/AST/CommentParser.cpp index 8c3895bda6..f6ef9b9b7c 100644 --- a/unittests/AST/CommentParser.cpp +++ b/unittests/AST/CommentParser.cpp @@ -55,7 +55,7 @@ protected: FullComment *CommentParserTest::parseString(const char *Source) { std::unique_ptr Buf = MemoryBuffer::getMemBuffer(Source); - FileID File = SourceMgr.createFileID(Buf.release()); + FileID File = SourceMgr.createFileID(std::move(Buf)); SourceLocation Begin = SourceMgr.getLocForStartOfFile(File); Lexer L(Allocator, Diags, Traits, Begin, Source, Source + strlen(Source)); diff --git a/unittests/Basic/SourceManagerTest.cpp b/unittests/Basic/SourceManagerTest.cpp index 540a8051e6..8f066ba8b8 100644 --- a/unittests/Basic/SourceManagerTest.cpp +++ b/unittests/Basic/SourceManagerTest.cpp @@ -75,7 +75,7 @@ TEST_F(SourceManagerTest, isBeforeInTranslationUnit) { "#define M(x) [x]\n" "M(foo)"; std::unique_ptr Buf = MemoryBuffer::getMemBuffer(source); - FileID mainFileID = SourceMgr.createFileID(Buf.release()); + FileID mainFileID = SourceMgr.createFileID(std::move(Buf)); SourceMgr.setMainFileID(mainFileID); VoidModuleLoader ModLoader; @@ -128,7 +128,7 @@ TEST_F(SourceManagerTest, getColumnNumber) { "int y;"; std::unique_ptr Buf = MemoryBuffer::getMemBuffer(Source); - FileID MainFileID = SourceMgr.createFileID(Buf.release()); + FileID MainFileID = SourceMgr.createFileID(std::move(Buf)); SourceMgr.setMainFileID(MainFileID); bool Invalid; @@ -188,7 +188,7 @@ TEST_F(SourceManagerTest, getMacroArgExpandedLocation) { std::unique_ptr HeaderBuf = MemoryBuffer::getMemBuffer(header); std::unique_ptr MainBuf = MemoryBuffer::getMemBuffer(main); - FileID mainFileID = SourceMgr.createFileID(MainBuf.release()); + FileID mainFileID = SourceMgr.createFileID(std::move(MainBuf)); SourceMgr.setMainFileID(mainFileID); const FileEntry *headerFile = FileMgr.getVirtualFile("/test-header.h", @@ -287,7 +287,7 @@ TEST_F(SourceManagerTest, isBeforeInTranslationUnitWithMacroInInclude) { std::unique_ptr HeaderBuf = MemoryBuffer::getMemBuffer(header); std::unique_ptr MainBuf = MemoryBuffer::getMemBuffer(main); - SourceMgr.setMainFileID(SourceMgr.createFileID(MainBuf.release())); + SourceMgr.setMainFileID(SourceMgr.createFileID(std::move(MainBuf))); const FileEntry *headerFile = FileMgr.getVirtualFile("/test-header.h", HeaderBuf->getBufferSize(), 0); diff --git a/unittests/CodeGen/BufferSourceTest.cpp b/unittests/CodeGen/BufferSourceTest.cpp index ccff18c18c..f9d0991933 100644 --- a/unittests/CodeGen/BufferSourceTest.cpp +++ b/unittests/CodeGen/BufferSourceTest.cpp @@ -69,9 +69,8 @@ TEST(BufferSourceTest, EmitCXXGlobalInitFunc) { compiler.createSema(clang::TU_Prefix,NULL); clang::SourceManager &sm = compiler.getSourceManager(); - sm.setMainFileID( - sm.createFileID(llvm::MemoryBuffer::getMemBuffer(TestProgram).release(), - clang::SrcMgr::C_User)); + sm.setMainFileID(sm.createFileID( + llvm::MemoryBuffer::getMemBuffer(TestProgram), clang::SrcMgr::C_User)); clang::ParseAST(compiler.getSema(), false, false); } diff --git a/unittests/Lex/LexerTest.cpp b/unittests/Lex/LexerTest.cpp index 9de5eaf412..85987bf001 100644 --- a/unittests/Lex/LexerTest.cpp +++ b/unittests/Lex/LexerTest.cpp @@ -63,7 +63,7 @@ protected: std::vector CheckLex(StringRef Source, ArrayRef ExpectedTokens) { std::unique_ptr Buf = MemoryBuffer::getMemBuffer(Source); - SourceMgr.setMainFileID(SourceMgr.createFileID(Buf.release())); + SourceMgr.setMainFileID(SourceMgr.createFileID(std::move(Buf))); VoidModuleLoader ModLoader; HeaderSearch HeaderInfo(new HeaderSearchOptions, SourceMgr, Diags, LangOpts, diff --git a/unittests/Lex/PPCallbacksTest.cpp b/unittests/Lex/PPCallbacksTest.cpp index 4bba5a03b4..f020206470 100644 --- a/unittests/Lex/PPCallbacksTest.cpp +++ b/unittests/Lex/PPCallbacksTest.cpp @@ -161,7 +161,7 @@ protected: CharSourceRange InclusionDirectiveFilenameRange(const char* SourceText, const char* HeaderPath, bool SystemHeader) { std::unique_ptr Buf = MemoryBuffer::getMemBuffer(SourceText); - SourceMgr.setMainFileID(SourceMgr.createFileID(Buf.release())); + SourceMgr.setMainFileID(SourceMgr.createFileID(std::move(Buf))); VoidModuleLoader ModLoader; @@ -199,7 +199,7 @@ protected: std::unique_ptr SourceBuf = MemoryBuffer::getMemBuffer(SourceText, "test.cl"); - SourceMgr.setMainFileID(SourceMgr.createFileID(SourceBuf.release())); + SourceMgr.setMainFileID(SourceMgr.createFileID(std::move(SourceBuf))); VoidModuleLoader ModLoader; HeaderSearch HeaderInfo(new HeaderSearchOptions, SourceMgr, Diags, diff --git a/unittests/Lex/PPConditionalDirectiveRecordTest.cpp b/unittests/Lex/PPConditionalDirectiveRecordTest.cpp index 56899ce49f..033b3545af 100644 --- a/unittests/Lex/PPConditionalDirectiveRecordTest.cpp +++ b/unittests/Lex/PPConditionalDirectiveRecordTest.cpp @@ -91,7 +91,7 @@ TEST_F(PPConditionalDirectiveRecordTest, PPRecAPI) { "9\n"; std::unique_ptr Buf = MemoryBuffer::getMemBuffer(source); - SourceMgr.setMainFileID(SourceMgr.createFileID(Buf.release())); + SourceMgr.setMainFileID(SourceMgr.createFileID(std::move(Buf))); VoidModuleLoader ModLoader; HeaderSearch HeaderInfo(new HeaderSearchOptions, SourceMgr, Diags, LangOpts,