diff options
author | Kazu Hirata <kazu@google.com> | 2025-05-22 12:44:20 -0700 |
---|---|---|
committer | Kazu Hirata <kazu@google.com> | 2025-05-22 12:44:20 -0700 |
commit | e2a885537f11f8d9ced1c80c2c90069ab5adeb1d (patch) | |
tree | d838fa124762f02c1b2ce921f667beb29acfee7b /clang/lib/Serialization | |
parent | e23a6921b47d2cfb4d27289149079e9d77aa0560 (diff) | |
download | llvm-e2a885537f11f8d9ced1c80c2c90069ab5adeb1d.zip llvm-e2a885537f11f8d9ced1c80c2c90069ab5adeb1d.tar.gz llvm-e2a885537f11f8d9ced1c80c2c90069ab5adeb1d.tar.bz2 |
Revert "[clang] Remove intrusive reference count from `DiagnosticOptions` (#139584)"
This reverts commit 9e306ad4600c4d3392c194a8be88919ee758425c.
Multiple builtbot failures have been reported:
https://github.com/llvm/llvm-project/pull/139584
Diffstat (limited to 'clang/lib/Serialization')
-rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index c113fd7..d068f5e1 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -193,7 +193,8 @@ bool ChainedASTReaderListener::ReadTargetOptions( } bool ChainedASTReaderListener::ReadDiagnosticOptions( - DiagnosticOptions &DiagOpts, StringRef ModuleFilename, bool Complain) { + IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts, StringRef ModuleFilename, + bool Complain) { return First->ReadDiagnosticOptions(DiagOpts, ModuleFilename, Complain) || Second->ReadDiagnosticOptions(DiagOpts, ModuleFilename, Complain); } @@ -594,16 +595,16 @@ static Module *getTopImportImplicitModule(ModuleManager &ModuleMgr, return M; } -bool PCHValidator::ReadDiagnosticOptions(DiagnosticOptions &DiagOpts, - StringRef ModuleFilename, - bool Complain) { +bool PCHValidator::ReadDiagnosticOptions( + IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts, StringRef ModuleFilename, + bool Complain) { DiagnosticsEngine &ExistingDiags = PP.getDiagnostics(); IntrusiveRefCntPtr<DiagnosticIDs> DiagIDs(ExistingDiags.getDiagnosticIDs()); IntrusiveRefCntPtr<DiagnosticsEngine> Diags( - new DiagnosticsEngine(DiagIDs, DiagOpts)); + new DiagnosticsEngine(DiagIDs, DiagOpts.get())); // This should never fail, because we would have processed these options // before writing them to an ASTFile. - ProcessWarningOptions(*Diags, DiagOpts, + ProcessWarningOptions(*Diags, *DiagOpts, PP.getFileManager().getVirtualFileSystem(), /*Report*/ false); @@ -6421,17 +6422,17 @@ bool ASTReader::ParseTargetOptions(const RecordData &Record, bool ASTReader::ParseDiagnosticOptions(const RecordData &Record, StringRef ModuleFilename, bool Complain, ASTReaderListener &Listener) { - DiagnosticOptions DiagOpts; + IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts(new DiagnosticOptions); unsigned Idx = 0; -#define DIAGOPT(Name, Bits, Default) DiagOpts.Name = Record[Idx++]; -#define ENUM_DIAGOPT(Name, Type, Bits, Default) \ - DiagOpts.set##Name(static_cast<Type>(Record[Idx++])); +#define DIAGOPT(Name, Bits, Default) DiagOpts->Name = Record[Idx++]; +#define ENUM_DIAGOPT(Name, Type, Bits, Default) \ + DiagOpts->set##Name(static_cast<Type>(Record[Idx++])); #include "clang/Basic/DiagnosticOptions.def" for (unsigned N = Record[Idx++]; N; --N) - DiagOpts.Warnings.push_back(ReadString(Record, Idx)); + DiagOpts->Warnings.push_back(ReadString(Record, Idx)); for (unsigned N = Record[Idx++]; N; --N) - DiagOpts.Remarks.push_back(ReadString(Record, Idx)); + DiagOpts->Remarks.push_back(ReadString(Record, Idx)); return Listener.ReadDiagnosticOptions(DiagOpts, ModuleFilename, Complain); } |