[clang] [llvm] [TimeProfiler][Clang] Add zstd-compressed time-trace output support (PR #228627)

Chandler Carruth via cfe-commits cfe-commits at lists.llvm.org
Sun Oct 18 02:33:47 PDT 2026


================
@@ -7344,6 +7346,32 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
     CmdArgs.push_back(Args.MakeArgString("-ftime-trace=" + Twine(Name)));
     Args.AddLastArg(CmdArgs, options::OPT_ftime_trace_granularity_EQ);
     Args.AddLastArg(CmdArgs, options::OPT_ftime_trace_verbose);
+    llvm::TimeTraceCompression Compress = llvm::TimeTraceCompression::Infer;
+    if (const Arg *CompressArg =
+            Args.getLastArg(options::OPT_ftime_trace_compress_EQ)) {
+      StringRef Value = CompressArg->getValue();
+      if (Value == "none")
+        Compress = llvm::TimeTraceCompression::None;
+      else if (Value == "zstd")
+        Compress = llvm::TimeTraceCompression::Zstd;
+      else if (Value == "infer")
+        Compress = llvm::TimeTraceCompression::Infer;
+      else
+        D.Diag(diag::err_drv_unsupported_option_argument)
+            << CompressArg->getSpelling() << Value;
+    }
+    if (Compress == llvm::TimeTraceCompression::Infer)
+      Compress = llvm::inferTimeTraceCompressionFromPath(Name);
+    if (Compress == llvm::TimeTraceCompression::Zstd) {
+      if (llvm::compression::zstd::isAvailable())
+        CmdArgs.push_back("-ftime-trace-compress=zstd");
+      else
+        D.Diag(diag::err_drv_time_trace_compression_unavailable) << "zstd";
----------------
chandlerc wrote:

Good point, done and simplified accordingly.

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


More information about the cfe-commits mailing list