Merge remote-tracking branch 'origin/main' into rebranch

This commit is contained in:
swift-ci
2024-10-09 14:44:21 -07:00
2 changed files with 18 additions and 7 deletions

View File

@@ -629,6 +629,11 @@ llvm::Error DiagnosticSerializer::deserializeDiagnosticInfo(
llvm::Error llvm::Error
DiagnosticSerializer::serializeEmittedDiagnostics(llvm::raw_ostream &os) { DiagnosticSerializer::serializeEmittedDiagnostics(llvm::raw_ostream &os) {
// If no diagnostics is produced, do not write anything so output is smaller
// without referencing any files.
if (DiagInfos.empty())
return llvm::Error::success();
// Convert all file backed source file into CASIDs. // Convert all file backed source file into CASIDs.
for (auto &File : Files) { for (auto &File : Files) {
if (!File.Content.empty() || !File.ContentCASID.empty()) if (!File.Content.empty() || !File.ContentCASID.empty())
@@ -822,12 +827,14 @@ CachingDiagnosticsProcessor::CachingDiagnosticsProcessor(
// compress the YAML file. // compress the YAML file.
llvm::SmallVector<uint8_t, 512> Compression; llvm::SmallVector<uint8_t, 512> Compression;
if (llvm::compression::zstd::isAvailable()) if (!Output.empty()) {
llvm::compression::zstd::compress(arrayRefFromStringRef(Output), if (llvm::compression::zstd::isAvailable())
Compression); llvm::compression::zstd::compress(arrayRefFromStringRef(Output),
else if (llvm::compression::zlib::isAvailable()) Compression);
llvm::compression::zlib::compress(arrayRefFromStringRef(Output), else if (llvm::compression::zlib::isAvailable())
Compression); llvm::compression::zlib::compress(arrayRefFromStringRef(Output),
Compression);
}
// Write the uncompressed size in the end. // Write the uncompressed size in the end.
if (!Compression.empty()) { if (!Compression.empty()) {
@@ -872,6 +879,10 @@ llvm::Error CachingDiagnosticsProcessor::serializeEmittedDiagnostics(
llvm::Error llvm::Error
CachingDiagnosticsProcessor::replayCachedDiagnostics(llvm::StringRef Buffer) { CachingDiagnosticsProcessor::replayCachedDiagnostics(llvm::StringRef Buffer) {
// If empty buffer, no diagnostics to replay.
if (Buffer.empty())
return llvm::Error::success();
SmallVector<uint8_t, 512> Uncompressed; SmallVector<uint8_t, 512> Uncompressed;
if (llvm::compression::zstd::isAvailable() || if (llvm::compression::zstd::isAvailable() ||
llvm::compression::zlib::isAvailable()) { llvm::compression::zlib::isAvailable()) {

View File

@@ -1985,7 +1985,7 @@ int swift::performFrontend(ArrayRef<const char *> Args,
// hundreds or thousands of lines. Skip dumping this output in that case. // hundreds or thousands of lines. Skip dumping this output in that case.
if (!Invocation.getFrontendOptions().InputsAndOutputs.isWholeModule()) { if (!Invocation.getFrontendOptions().InputsAndOutputs.isWholeModule()) {
for_each(configurationFileBuffers.begin(), configurationFileBuffers.end(), for_each(configurationFileBuffers.begin(), configurationFileBuffers.end(),
&configurationFileStackTraces[0], configurationFileStackTraces.get(),
[](const std::unique_ptr<llvm::MemoryBuffer> &buffer, [](const std::unique_ptr<llvm::MemoryBuffer> &buffer,
std::optional<PrettyStackTraceFileContents> &trace) { std::optional<PrettyStackTraceFileContents> &trace) {
trace.emplace(*buffer); trace.emplace(*buffer);