]> granicus.if.org Git - clang/commitdiff
unique_ptrify SourceManager::createFileID
authorDavid Blaikie <dblaikie@gmail.com>
Fri, 29 Aug 2014 07:59:55 +0000 (07:59 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Fri, 29 Aug 2014 07:59:55 +0000 (07:59 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216715 91177308-0d34-0410-b5e6-96231b3b80d8

15 files changed:
include/clang/Basic/SourceManager.h
lib/AST/ASTImporter.cpp
lib/Basic/SourceManager.cpp
lib/CodeGen/CodeGenAction.cpp
lib/Frontend/CompilerInstance.cpp
lib/Lex/Preprocessor.cpp
lib/Lex/ScratchBuffer.cpp
lib/Serialization/ASTReader.cpp
unittests/AST/CommentLexer.cpp
unittests/AST/CommentParser.cpp
unittests/Basic/SourceManagerTest.cpp
unittests/CodeGen/BufferSourceTest.cpp
unittests/Lex/LexerTest.cpp
unittests/Lex/PPCallbacksTest.cpp
unittests/Lex/PPConditionalDirectiveRecordTest.cpp

index 8addde9d1559103c2db7b2491a5c9d0345c2c27a..d5426c18da0355ca0e5aefd1236fd7d8481beca2 100644 (file)
@@ -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<llvm::MemoryBuffer> 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<llvm::MemoryBuffer> 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<llvm::MemoryBuffer> Buf);
 
   FileID getFileIDSlow(unsigned SLocOffset) const;
   FileID getFileIDLocal(unsigned SLocOffset) const;
index aed359b0b356a09bb1a21ee31abeb9a5fd0129e4..05f39abaa37fc14bcf8c473a5c5e42776a464069 100644 (file)
@@ -4922,7 +4922,7 @@ FileID ASTImporter::Import(FileID FromID) {
     std::unique_ptr<llvm::MemoryBuffer> ToBuf
       = llvm::MemoryBuffer::getMemBufferCopy(FromBuf->getBuffer(),
                                              FromBuf->getBufferIdentifier());
-    ToID = ToSM.createFileID(ToBuf.release(),
+    ToID = ToSM.createFileID(std::move(ToBuf),
                              FromSLoc.getFile().getFileCharacteristic());
   }
   
index 47142e238e03d5881ea40c10543de680696106f0..0d47b094109809320a3469b78f861691b21bb658 100644 (file)
@@ -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<llvm::MemoryBuffer> Buffer) {
   // Add a new ContentCache to the MemBufferInfos list and return it.
   ContentCache *Entry = ContentCacheAlloc.Allocate<ContentCache>();
   new (Entry) ContentCache();
   MemBufferInfos.push_back(Entry);
-  Entry->setBuffer(Buffer);
+  Entry->setBuffer(std::move(Buffer));
   return Entry;
 }
 
index fe46fc78d135b778db8a18beb2984cc05bfc4600..1d81900acc226344299dd70dfe92e00a3c4555b0 100644 (file)
@@ -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();
index 4cba26cc63293249feac6da3cea283d21459d7de..513a43c140764efb766e686b07d4294ad3e393f3 100644 (file)
@@ -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<llvm::MemoryBuffer>(Input.getBuffer()), Kind));
     assert(!SourceMgr.getMainFileID().isInvalid() &&
            "Couldn't establish MainFileID!");
     return true;
index 1dd46b0de9b40730d8fa2b9223687533c13d9b56..faf5bbb38b9a96945e274cb3f60f65533799a7a3 100644 (file)
@@ -506,7 +506,7 @@ void Preprocessor::EnterMainSourceFile() {
   std::unique_ptr<llvm::MemoryBuffer> SB =
     llvm::MemoryBuffer::getMemBufferCopy(Predefines, "<built-in>");
   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);
 
index f779d3cd26554122038a225f8c94cc749e5459f8..3bac8891c646bd9d899d21bf0956b05ea6e7d909 100644 (file)
@@ -67,7 +67,7 @@ void ScratchBuffer::AllocScratchBuffer(unsigned RequestLen) {
   std::unique_ptr<llvm::MemoryBuffer> OwnBuf =
       llvm::MemoryBuffer::getNewMemBuffer(RequestLen, "<scratch space>");
   llvm::MemoryBuffer &Buf = *OwnBuf;
-  FileID FID = SourceMgr.createFileID(OwnBuf.release());
+  FileID FID = SourceMgr.createFileID(std::move(OwnBuf));
   BufferStartLoc = SourceMgr.getLocForStartOfFile(FID);
   CurBuffer = const_cast<char*>(Buf.getBufferStart());
   BytesUsed = 1;
index b65b5641ad46189b1f685ef7b04476134e9b6049..5b0aa1484b97f0a22e5d78c960513a331a13ae8e 100644 (file)
@@ -1253,7 +1253,7 @@ bool ASTReader::ReadSLocEntry(int ID) {
 
     std::unique_ptr<llvm::MemoryBuffer> 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;
   }
index 7cac1eaaf1cce7acd8687428cc8751cff963ea15..77ee22ffb43e1108909cc13d33b6307df211a97e 100644 (file)
@@ -61,7 +61,7 @@ protected:
 void CommentLexerTest::lexString(const char *Source,
                                  std::vector<Token> &Toks) {
   std::unique_ptr<MemoryBuffer> 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));
index 8c3895bda67fe5a0da77fd6187f8475c8bd29a89..f6ef9b9b7cea45bdda7beabcc12e2762b81e3083 100644 (file)
@@ -55,7 +55,7 @@ protected:
 
 FullComment *CommentParserTest::parseString(const char *Source) {
   std::unique_ptr<MemoryBuffer> 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));
index 540a8051e6011a01250a6f5a5f0323cbd3808993..8f066ba8b8278943d55ac5a22ebcb5441a9f5373 100644 (file)
@@ -75,7 +75,7 @@ TEST_F(SourceManagerTest, isBeforeInTranslationUnit) {
     "#define M(x) [x]\n"
     "M(foo)";
   std::unique_ptr<MemoryBuffer> 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<MemoryBuffer> 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<MemoryBuffer> HeaderBuf = MemoryBuffer::getMemBuffer(header);
   std::unique_ptr<MemoryBuffer> 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<MemoryBuffer> HeaderBuf = MemoryBuffer::getMemBuffer(header);
   std::unique_ptr<MemoryBuffer> 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);
index ccff18c18cf24c0b27b81772d2b6c816fe77fa66..f9d0991933fdbba9bbbadc4858fd1a290bff39ba 100644 (file)
@@ -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);
 }
index 9de5eaf4125756e7485557effcb254c424bd8b34..85987bf001612ebfc84da3b7e40cb06ffdcd4eab 100644 (file)
@@ -63,7 +63,7 @@ protected:
   std::vector<Token> CheckLex(StringRef Source,
                               ArrayRef<tok::TokenKind> ExpectedTokens) {
     std::unique_ptr<MemoryBuffer> 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,
index 4bba5a03b46419c78581309582a9b748a5b2130e..f020206470acc4ae7269ab4373150f1e9f4946d5 100644 (file)
@@ -161,7 +161,7 @@ protected:
   CharSourceRange InclusionDirectiveFilenameRange(const char* SourceText, 
       const char* HeaderPath, bool SystemHeader) {
     std::unique_ptr<MemoryBuffer> 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<MemoryBuffer> 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, 
index 56899ce49f2995ba519804e3a2a1ed1221c49f48..033b3545af3b96e4a5bca12978ec69ee850b2a06 100644 (file)
@@ -91,7 +91,7 @@ TEST_F(PPConditionalDirectiveRecordTest, PPRecAPI) {
       "9\n";
 
   std::unique_ptr<MemoryBuffer> 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,