aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Serialization
diff options
context:
space:
mode:
authorKazu Hirata <kazu@google.com>2025-05-22 12:44:20 -0700
committerKazu Hirata <kazu@google.com>2025-05-22 12:44:20 -0700
commite2a885537f11f8d9ced1c80c2c90069ab5adeb1d (patch)
treed838fa124762f02c1b2ce921f667beb29acfee7b /clang/lib/Serialization
parente23a6921b47d2cfb4d27289149079e9d77aa0560 (diff)
downloadllvm-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.cpp25
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);
}