================
@@ -425,26 +439,68 @@ void llvm::timeTraceProfilerFinishThread() {
 void llvm::timeTraceProfilerWrite(raw_pwrite_stream &OS) {
   assert(TimeTraceProfilerInstance != nullptr &&
          "Profiler object can't be null");
-  TimeTraceProfilerInstance->write(OS);
+  DebugCompressionType CompressType =
+      TimeTraceProfilerInstance->TimeTraceCompress;
+  if (CompressType == DebugCompressionType::None) {
+    TimeTraceProfilerInstance->write(OS);
+    return;
+  }
+
+  compression::Format F = compression::formatFor(CompressType);
+  if (const char *Reason = compression::getReasonIfUnsupported(F))
+    report_fatal_error(Reason);
+
+  SmallVector<char, 0> Uncompressed;
+  {
+    raw_svector_ostream UncompressedOS(Uncompressed);
+    TimeTraceProfilerInstance->write(UncompressedOS);
+  }
+  SmallVector<uint8_t, 0> Compressed;
+  compression::compress(
+      compression::Params(F),
+      ArrayRef(reinterpret_cast<const uint8_t *>(Uncompressed.data()),
+               Uncompressed.size()),
+      Compressed);
+  OS.write(reinterpret_cast<const char *>(Compressed.data()),
+           Compressed.size());
 }
 
 Error llvm::timeTraceProfilerWrite(StringRef PreferredFileName,
                                    StringRef FallbackFileName) {
   assert(TimeTraceProfilerInstance != nullptr &&
          "Profiler object can't be null");
 
+  DebugCompressionType CompressType =
+      TimeTraceProfilerInstance->TimeTraceCompress;
   std::string Path = PreferredFileName.str();
   if (Path.empty()) {
     Path = FallbackFileName == "-" ? "out" : FallbackFileName.str();
     Path += TimeTraceFileExtension;
+    if (CompressType == DebugCompressionType::Zstd)
+      Path += ".zst";
+  } else if (CompressType == DebugCompressionType::None) {
+    CompressType = inferTimeTraceCompressionFromPath(Path);
----------------
chandlerc wrote:

Yeah, introduced `llvm::TimeTraceCompression` and added `infer` to 
`-ftime-trace-compress=<none|zstd|infer>`. Seems a bit cleaner this way too.

https://github.com/llvm/llvm-project/pull/228627
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to