[PATCH] D155195: [include-cleaner] Avoid a caching issue when running --edit mode on multiple files.

Haojian Wu via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Jul 18 04:22:45 PDT 2023


This revision was automatically updated to reflect the committed changes.
Closed by commit rGbe861b64d941: [include-cleaner] Avoid a caching issue when running --edit mode on multiple… (authored by hokein).

Changed prior to commit:
  https://reviews.llvm.org/D155195?vs=539988&id=541449#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D155195/new/

https://reviews.llvm.org/D155195

Files:
  clang-tools-extra/include-cleaner/tool/IncludeCleaner.cpp


Index: clang-tools-extra/include-cleaner/tool/IncludeCleaner.cpp
===================================================================
--- clang-tools-extra/include-cleaner/tool/IncludeCleaner.cpp
+++ clang-tools-extra/include-cleaner/tool/IncludeCleaner.cpp
@@ -19,6 +19,7 @@
 #include "llvm/ADT/StringRef.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/FormatVariadic.h"
+#include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/Regex.h"
 #include "llvm/Support/Signals.h"
 #include "llvm/Support/raw_ostream.h"
@@ -270,12 +271,24 @@
       }
     }
   }
+
+  clang::tooling::ClangTool Tool(OptionsParser->getCompilations(),
+                                 OptionsParser->getSourcePathList());
+  std::vector<std::unique_ptr<llvm::MemoryBuffer>> Buffers;
+  for (const auto &File : OptionsParser->getSourcePathList()) {
+    auto Content = llvm::MemoryBuffer::getFile(File);
+    if (!Content) {
+      llvm::errs() << "Error: can't read file '" << File
+                   << "': " << Content.getError().message() << "\n";
+      return 1;
+    }
+    Buffers.push_back(std::move(Content.get()));
+    Tool.mapVirtualFile(File, Buffers.back()->getBuffer());
+  }
+
   auto HeaderFilter = headerFilter();
   if (!HeaderFilter)
     return 1; // error already reported.
   ActionFactory Factory(HeaderFilter);
-  return clang::tooling::ClangTool(OptionsParser->getCompilations(),
-                                   OptionsParser->getSourcePathList())
-             .run(&Factory) ||
-         Errors != 0;
+  return Tool.run(&Factory) || Errors != 0;
 }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D155195.541449.patch
Type: text/x-patch
Size: 1580 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230718/35c4cc2a/attachment.bin>


More information about the cfe-commits mailing list