<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Feb 8, 2014 at 1:38 AM, Dmitri Gribenko <span dir="ltr"><<a href="mailto:gribozavr@gmail.com" target="_blank" class="cremed">gribozavr@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: gribozavr<br>
Date: Fri Feb  7 18:38:15 2014<br>
New Revision: 201010<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=201010&view=rev" target="_blank" class="cremed">http://llvm.org/viewvc/llvm-project?rev=201010&view=rev</a><br>
Log:<br>
ASTUnit: remove dead code in remapping files<br>
<br>
ASTUnit contains code to remap files to other files on disk.  This code is not<br>
used.  We only remap files to MemoryBuffers.<br>
<br>
Modified:<br>
    cfe/trunk/include/clang/Frontend/ASTUnit.h<br>
    cfe/trunk/lib/Frontend/ASTUnit.cpp<br>
<br>
Modified: cfe/trunk/include/clang/Frontend/ASTUnit.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/ASTUnit.h?rev=201010&r1=201009&r2=201010&view=diff" target="_blank" class="cremed">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/ASTUnit.h?rev=201010&r1=201009&r2=201010&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/include/clang/Frontend/ASTUnit.h (original)<br>
+++ cfe/trunk/include/clang/Frontend/ASTUnit.h Fri Feb  7 18:38:15 2014<br>
@@ -671,11 +671,9 @@ public:<br>
   /// \brief Determine what kind of translation unit this AST represents.<br>
   TranslationUnitKind getTranslationUnitKind() const { return TUKind; }<br>
<br>
-  typedef llvm::PointerUnion<const char *, const llvm::MemoryBuffer *><br>
-      FilenameOrMemBuf;<br>
   /// \brief A mapping from a file name to the memory buffer that stores the<br>
   /// remapped contents of that file.<br>
-  typedef std::pair<std::string, FilenameOrMemBuf> RemappedFile;<br>
+  typedef std::pair<std::string, const llvm::MemoryBuffer *> RemappedFile;<br>
<br>
   /// \brief Create a ASTUnit. Gets ownership of the passed CompilerInvocation.<br>
   static ASTUnit *create(CompilerInvocation *CI,<br>
<br>
Modified: cfe/trunk/lib/Frontend/ASTUnit.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ASTUnit.cpp?rev=201010&r1=201009&r2=201010&view=diff" target="_blank" class="cremed">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ASTUnit.cpp?rev=201010&r1=201009&r2=201010&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/lib/Frontend/ASTUnit.cpp (original)<br>
+++ cfe/trunk/lib/Frontend/ASTUnit.cpp Fri Feb  7 18:38:15 2014<br>
@@ -710,54 +710,24 @@ ASTUnit *ASTUnit::LoadFromASTFile(const<br>
                                          AST->getDiagnostics(),<br>
                                          AST->ASTFileLangOpts,<br>
                                          /*Target=*/0));<br>
-<br>
-  for (unsigned I = 0, N = RemappedFiles.size(); I != N; ++I) {<br>
-    FilenameOrMemBuf fileOrBuf = RemappedFiles[I].second;<br>
-    if (const llvm::MemoryBuffer *<br>
-          memBuf = fileOrBuf.dyn_cast<const llvm::MemoryBuffer *>()) {<br>
-      // Create the file entry for the file that we're mapping from.<br>
-      const FileEntry *FromFile<br>
-        = AST->getFileManager().getVirtualFile(RemappedFiles[I].first,<br>
-                                               memBuf->getBufferSize(),<br>
-                                               0);<br>
-      if (!FromFile) {<br>
-        AST->getDiagnostics().Report(diag::err_fe_remap_missing_from_file)<br>
-          << RemappedFiles[I].first;<br>
-        delete memBuf;<br>
-        continue;<br>
-      }<br>
-<br>
-      // Override the contents of the "from" file with the contents of<br>
-      // the "to" file.<br>
-      AST->getSourceManager().overrideFileContents(FromFile, memBuf);<br>
<br>
-    } else {<br>
-      const char *fname = fileOrBuf.get<const char *>();<br>
-      const FileEntry *ToFile = AST->FileMgr->getFile(fname);<br>
-      if (!ToFile) {<br>
-        AST->getDiagnostics().Report(diag::err_fe_remap_missing_to_file)<br>
-        << RemappedFiles[I].first << fname;<br>
-        continue;<br>
-      }<br>
-<br>
-      // Create the file entry for the file that we're mapping from.<br>
-      const FileEntry *FromFile<br>
-        = AST->getFileManager().getVirtualFile(RemappedFiles[I].first,<br>
-                                               ToFile->getSize(),<br>
-                                               0);<br>
-      if (!FromFile) {<br>
-        AST->getDiagnostics().Report(diag::err_fe_remap_missing_from_file)<br>
+  for (unsigned I = 0, N = RemappedFiles.size(); I != N; ++I) {<br>
+    const llvm::MemoryBuffer *MemBuf = RemappedFiles[I].second;<br>
+    // Create the file entry for the file that we're mapping from.<br>
+    const FileEntry *FromFile = AST->getFileManager().getVirtualFile(<br>
+        RemappedFiles[I].first, MemBuf->getBufferSize(), 0);<br>
+    if (!FromFile) {<br>
+      AST->getDiagnostics().Report(diag::err_fe_remap_missing_from_file)<br>
           << RemappedFiles[I].first;<br>
-        delete memBuf;<br>
-        continue;<br>
-      }<br>
-<br>
-      // Override the contents of the "from" file with the contents of<br>
-      // the "to" file.<br>
-      AST->getSourceManager().overrideFileContents(FromFile, ToFile);<br>
+      delete MemBuf;<br>
+      continue;<br>
     }<br>
+<br>
+    // Override the contents of the "from" file with the contents of<br>
+    // the "to" file.<br>
+    AST->getSourceManager().overrideFileContents(FromFile, MemBuf);<br>
   }<br>
-<br>
+<br>
   // Gather Info for preprocessor construction later on.<br>
<br>
   HeaderSearch &HeaderInfo = *AST->HeaderInfo.get();<br>
@@ -2055,14 +2025,8 @@ ASTUnit *ASTUnit::LoadFromCommandLine(co<br>
<br>
   // Override any files that need remapping<br>
   for (unsigned I = 0, N = RemappedFiles.size(); I != N; ++I) {<br>
-    FilenameOrMemBuf fileOrBuf = RemappedFiles[I].second;<br>
-    if (const llvm::MemoryBuffer *<br>
-            memBuf = fileOrBuf.dyn_cast<const llvm::MemoryBuffer *>()) {<br>
-      CI->getPreprocessorOpts().addRemappedFile(RemappedFiles[I].first, memBuf);<br>
-    } else {<br>
-      const char *fname = fileOrBuf.get<const char *>();<br>
-      CI->getPreprocessorOpts().addRemappedFile(RemappedFiles[I].first, fname);<br>
-    }<br>
+    CI->getPreprocessorOpts().addRemappedFile(RemappedFiles[I].first,<br>
+                                              RemappedFiles[I].second);<br>
   }<br>
   PreprocessorOptions &PPOpts = CI->getPreprocessorOpts();<br>
   PPOpts.RemappedFilesKeepOriginalName = RemappedFilesKeepOriginalName;<br>
@@ -2132,18 +2096,10 @@ bool ASTUnit::Reparse(ArrayRef<RemappedF<br>
   }<br>
   Invocation->getPreprocessorOpts().clearRemappedFiles();<br>
   for (unsigned I = 0, N = RemappedFiles.size(); I != N; ++I) {<br>
-    FilenameOrMemBuf fileOrBuf = RemappedFiles[I].second;<br>
-    if (const llvm::MemoryBuffer *<br>
-            memBuf = fileOrBuf.dyn_cast<const llvm::MemoryBuffer *>()) {<br>
-      Invocation->getPreprocessorOpts().addRemappedFile(RemappedFiles[I].first,<br>
-                                                        memBuf);<br>
-    } else {<br>
-      const char *fname = fileOrBuf.get<const char *>();<br>
-      Invocation->getPreprocessorOpts().addRemappedFile(RemappedFiles[I].first,<br>
-                                                        fname);<br>
-    }<br>
+    Invocation->getPreprocessorOpts().addRemappedFile(RemappedFiles[I].first,<br>
+                                                      RemappedFiles[I].second);<br>
   }<br>
-<br>
+<br>
   // If we have a preamble file lying around, or if we might try to<br>
   // build a precompiled preamble, do so now.<br>
   llvm::MemoryBuffer *OverrideMainBuffer = 0;<br>
@@ -2497,17 +2453,10 @@ void ASTUnit::CodeComplete(StringRef Fil<br>
   PreprocessorOpts.clearRemappedFiles();<br>
   PreprocessorOpts.RetainRemappedFileBuffers = true;<br>
   for (unsigned I = 0, N = RemappedFiles.size(); I != N; ++I) {<br>
-    FilenameOrMemBuf fileOrBuf = RemappedFiles[I].second;<br>
-    if (const llvm::MemoryBuffer *<br>
-            memBuf = fileOrBuf.dyn_cast<const llvm::MemoryBuffer *>()) {<br>
-      PreprocessorOpts.addRemappedFile(RemappedFiles[I].first, memBuf);<br>
-      OwnedBuffers.push_back(memBuf);</blockquote><div><br></div><div>Not adding MemoryBuffers to OwnedBuffers creates a memory leak. Did you intentionally remove that?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 </blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
-    } else {<br>
-      const char *fname = fileOrBuf.get<const char *>();<br>
-      PreprocessorOpts.addRemappedFile(RemappedFiles[I].first, fname);<br>
-    }<br>
+    PreprocessorOpts.addRemappedFile(RemappedFiles[I].first,<br>
+                                     RemappedFiles[I].second);<br>
   }<br>
-<br>
+<br>
   // Use the code completion consumer we were given, but adding any cached<br>
   // code-completion results.<br>
   AugmentedCodeCompleteConsumer *AugmentedConsumer<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu" class="cremed">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank" class="cremed">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div></div>