[llvm] [clang-tools-extra] [clang] [compiler-rt] [Profile] Allow profile merging with multiple correlate files. (PR #75957)

Ellis Hoag via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 20 11:26:41 PST 2023


================
@@ -118,18 +118,18 @@ cl::opt<std::string> ProfiledBinary(
     "profiled-binary", cl::init(""),
     cl::desc("Path to binary from which the profile was collected."),
     cl::sub(ShowSubcommand), cl::sub(MergeSubcommand));
-cl::opt<std::string> DebugInfoFilename(
-    "debug-info", cl::init(""),
+cl::list<std::string> DebugInfoFilenames(
+    "debug-info",
     cl::desc(
         "For show, read and extract profile metadata from debug info and show "
         "the functions it found. For merge, use the provided debug info to "
         "correlate the raw profile."),
     cl::sub(ShowSubcommand), cl::sub(MergeSubcommand));
-cl::opt<std::string>
-    BinaryFilename("binary-file", cl::init(""),
-                   cl::desc("For merge, use the provided unstripped bianry to "
-                            "correlate the raw profile."),
-                   cl::sub(MergeSubcommand));
+cl::list<std::string>
+    BinaryFilenames("binary-file",
+                    cl::desc("For merge, use the provided unstripped bianry to "
+                             "correlate the raw profile."),
+                    cl::sub(MergeSubcommand));
----------------
ellishg wrote:

It looks like we are switching from passing a single correlation file to a list of correlation files. Is that so that we can pass all raw profiles into a single `llvm-profdata merge` command? Presumably we should know which binaries produce which raw profiles. Then we could run an `llvm-profdata merge` command for each correlation file and its corresponding raw profiles. Ad we can either merge together all the intermediate indexed profiles, or simply pass the final indexed profile into all the merge commands. If I remember correctly, the first merge command can accept an empty indexed profile. Does this patch provide any advantages over the process I've described?

https://github.com/llvm/llvm-project/pull/75957


More information about the llvm-commits mailing list