@@ -370,7 +370,7 @@ static Expected<llvm::cas::CASID> scanAndUpdateCC1InlineWithTool(
370370static llvm::Expected<llvm::cas::CASID> scanAndUpdateCC1UsingDaemon (
371371 const char *Exec, ArrayRef<const char *> OldArgs,
372372 StringRef WorkingDirectory, SmallVectorImpl<const char *> &NewArgs,
373- StringRef &DiagnosticOutput, StringRef Path,
373+ std::string &DiagnosticOutput, StringRef Path,
374374 const DepscanSharing &Sharing,
375375 llvm::function_ref<const char *(const Twine &)> SaveArg,
376376 llvm::cas::ObjectStore &CAS) {
@@ -397,9 +397,13 @@ static llvm::Expected<llvm::cas::CASID> scanAndUpdateCC1UsingDaemon(
397397 CC1DepScanDProtocol::ResultKind Result;
398398 StringRef FailedReason;
399399 StringRef RootID;
400+ StringRef DiagOut;
400401 if (auto E = Comms.getScanResult (Saver, Result, FailedReason, RootID,
401- RawNewArgs, DiagnosticOutput))
402+ RawNewArgs, DiagOut)) {
403+ DiagnosticOutput = DiagOut;
402404 return std::move (E);
405+ }
406+ DiagnosticOutput = DiagOut;
403407
404408 if (Result != CC1DepScanDProtocol::SuccessResult)
405409 return llvm::createStringError (llvm::inconvertibleErrorCode (),
@@ -504,7 +508,7 @@ static int scanAndUpdateCC1(const char *Exec, ArrayRef<const char *> OldArgs,
504508 if (ProduceIncludeTree)
505509 Sharing.CASArgs .push_back (" -fdepscan-include-tree" );
506510
507- StringRef DiagnosticOutput;
511+ std::string DiagnosticOutput;
508512 bool DiagnosticErrorOccurred = false ;
509513 auto ScanAndUpdate = [&]() {
510514 if (std::optional<std::string> DaemonPath =
0 commit comments