[PATCH] D126695: [BOLT] Allow merge-fdata to take a directory as input
Yi Kong via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue May 31 12:21:50 PDT 2022
This revision was automatically updated to reflect the committed changes.
Closed by commit rG2a42f7f72a13: [BOLT] Allow merge-fdata to take a directory as input (authored by kongyi).
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D126695/new/
https://reviews.llvm.org/D126695
Files:
bolt/tools/merge-fdata/merge-fdata.cpp
Index: bolt/tools/merge-fdata/merge-fdata.cpp
===================================================================
--- bolt/tools/merge-fdata/merge-fdata.cpp
+++ bolt/tools/merge-fdata/merge-fdata.cpp
@@ -15,6 +15,7 @@
#include "bolt/Profile/ProfileYAMLMapping.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/Support/CommandLine.h"
+#include "llvm/Support/FileSystem.h"
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Support/PrettyStackTrace.h"
#include "llvm/Support/Signals.h"
@@ -235,7 +236,7 @@
return false;
}
-void mergeLegacyProfiles(const cl::list<std::string> &Filenames) {
+void mergeLegacyProfiles(const SmallVectorImpl<std::string> &Filenames) {
errs() << "Using legacy profile format.\n";
bool BoltedCollection = false;
bool First = true;
@@ -305,8 +306,28 @@
ToolName = argv[0];
- if (!isYAML(opts::InputDataFilenames.front())) {
- mergeLegacyProfiles(opts::InputDataFilenames);
+ // Recursively expand input directories into input file lists.
+ SmallVector<std::string> Inputs;
+ for (std::string &InputDataFilename : opts::InputDataFilenames) {
+ if (!llvm::sys::fs::exists(InputDataFilename))
+ report_error(InputDataFilename,
+ std::make_error_code(std::errc::no_such_file_or_directory));
+ if (llvm::sys::fs::is_regular_file(InputDataFilename))
+ Inputs.emplace_back(InputDataFilename);
+ else if (llvm::sys::fs::is_directory(InputDataFilename)) {
+ std::error_code EC;
+ for (llvm::sys::fs::recursive_directory_iterator F(InputDataFilename, EC),
+ E;
+ F != E && !EC; F.increment(EC))
+ if (llvm::sys::fs::is_regular_file(F->path()))
+ Inputs.emplace_back(F->path());
+ if (EC)
+ report_error(InputDataFilename, EC);
+ }
+ }
+
+ if (!isYAML(Inputs.front())) {
+ mergeLegacyProfiles(Inputs);
return 0;
}
@@ -317,7 +338,7 @@
// Merged information for all functions.
StringMap<BinaryFunctionProfile> MergedBFs;
- for (std::string &InputDataFilename : opts::InputDataFilenames) {
+ for (std::string &InputDataFilename : Inputs) {
ErrorOr<std::unique_ptr<MemoryBuffer>> MB =
MemoryBuffer::getFileOrSTDIN(InputDataFilename);
if (std::error_code EC = MB.getError())
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D126695.433165.patch
Type: text/x-patch
Size: 2265 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220531/faa9fcb6/attachment.bin>
More information about the llvm-commits
mailing list