Skip to content

Commit 5833e5a

Browse files
committed
NFC: Clean up construction of IntrusiveRefCntPtr from raw pointers for clang::DiagnosticsEngine.
Part of cleanup #151026.
1 parent 1a642ae commit 5833e5a

29 files changed

+74
-66
lines changed

clang/include/clang/Frontend/ASTUnit.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,9 @@ class ASTUnit {
445445

446446
const DiagnosticsEngine &getDiagnostics() const { return *Diagnostics; }
447447
DiagnosticsEngine &getDiagnostics() { return *Diagnostics; }
448+
llvm::IntrusiveRefCntPtr<DiagnosticsEngine> getDiagnosticsPtr() {
449+
return Diagnostics;
450+
}
448451

449452
const SourceManager &getSourceManager() const { return *SourceMgr; }
450453
SourceManager &getSourceManager() { return *SourceMgr; }
@@ -918,8 +921,9 @@ class ASTUnit {
918921
bool IncludeCodePatterns, bool IncludeBriefComments,
919922
CodeCompleteConsumer &Consumer,
920923
std::shared_ptr<PCHContainerOperations> PCHContainerOps,
921-
DiagnosticsEngine &Diag, LangOptions &LangOpts,
922-
SourceManager &SourceMgr, FileManager &FileMgr,
924+
llvm::IntrusiveRefCntPtr<DiagnosticsEngine> Diag,
925+
LangOptions &LangOpts, SourceManager &SourceMgr,
926+
FileManager &FileMgr,
923927
SmallVectorImpl<StoredDiagnostic> &StoredDiagnostics,
924928
SmallVectorImpl<const llvm::MemoryBuffer *> &OwnedBuffers,
925929
std::unique_ptr<SyntaxOnlyAction> Act);

clang/include/clang/Frontend/CompilerInstance.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ class CompilerInstance : public ModuleLoader {
361361
}
362362

363363
/// setDiagnostics - Replace the current diagnostics engine.
364-
void setDiagnostics(DiagnosticsEngine *Value);
364+
void setDiagnostics(llvm::IntrusiveRefCntPtr<DiagnosticsEngine> Value);
365365

366366
DiagnosticConsumer &getDiagnosticClient() const {
367367
assert(Diagnostics && Diagnostics->getClient() &&

clang/include/clang/Frontend/PrecompiledPreamble.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ class PrecompiledPreamble {
8484
static llvm::ErrorOr<PrecompiledPreamble>
8585
Build(const CompilerInvocation &Invocation,
8686
const llvm::MemoryBuffer *MainFileBuffer, PreambleBounds Bounds,
87-
DiagnosticsEngine &Diagnostics,
87+
IntrusiveRefCntPtr<DiagnosticsEngine> Diagnostics,
8888
IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS,
8989
std::shared_ptr<PCHContainerOperations> PCHContainerOps,
9090
bool StoreInMemory, StringRef StoragePath,

clang/lib/CrossTU/CrossTranslationUnit.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -563,8 +563,8 @@ CrossTranslationUnitContext::ASTLoader::loadFromDump(StringRef ASTDumpPath) {
563563
auto DiagOpts = std::make_shared<DiagnosticOptions>();
564564
TextDiagnosticPrinter *DiagClient =
565565
new TextDiagnosticPrinter(llvm::errs(), *DiagOpts);
566-
IntrusiveRefCntPtr<DiagnosticsEngine> Diags(
567-
new DiagnosticsEngine(DiagnosticIDs::create(), *DiagOpts, DiagClient));
566+
auto Diags = llvm::makeIntrusiveRefCnt<DiagnosticsEngine>(
567+
DiagnosticIDs::create(), *DiagOpts, DiagClient);
568568
return ASTUnit::LoadFromASTFile(
569569
ASTDumpPath, CI.getPCHContainerOperations()->getRawReader(),
570570
ASTUnit::LoadEverything, DiagOpts, Diags, CI.getFileSystemOpts(),
@@ -606,8 +606,8 @@ CrossTranslationUnitContext::ASTLoader::loadFromSource(
606606
auto *DiagClient = new ForwardingDiagnosticConsumer{CI.getDiagnosticClient()};
607607
IntrusiveRefCntPtr<DiagnosticIDs> DiagID{
608608
CI.getDiagnostics().getDiagnosticIDs()};
609-
IntrusiveRefCntPtr<DiagnosticsEngine> Diags(
610-
new DiagnosticsEngine{DiagID, *DiagOpts, DiagClient});
609+
auto Diags = llvm::makeIntrusiveRefCnt<DiagnosticsEngine>(DiagID, *DiagOpts,
610+
DiagClient);
611611

612612
return ASTUnit::LoadFromCommandLine(
613613
CommandLineArgs.begin(), (CommandLineArgs.end()),

clang/lib/Frontend/ASTMerge.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ void ASTMergeAction::ExecuteAction() {
4141
auto SharedState = std::make_shared<ASTImporterSharedState>(
4242
*CI.getASTContext().getTranslationUnitDecl());
4343
for (unsigned I = 0, N = ASTFiles.size(); I != N; ++I) {
44-
IntrusiveRefCntPtr<DiagnosticsEngine> Diags(new DiagnosticsEngine(
44+
auto Diags = llvm::makeIntrusiveRefCnt<DiagnosticsEngine>(
4545
DiagIDs, CI.getDiagnosticOpts(),
4646
new ForwardingDiagnosticConsumer(*CI.getDiagnostics().getClient()),
47-
/*ShouldOwnClient=*/true));
47+
/*ShouldOwnClient=*/true);
4848
std::unique_ptr<ASTUnit> Unit = ASTUnit::LoadFromASTFile(
4949
ASTFiles[I], CI.getPCHContainerReader(), ASTUnit::LoadEverything,
5050
nullptr, Diags, CI.getFileSystemOpts(), CI.getHeaderSearchOpts());

clang/lib/Frontend/ASTUnit.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1204,7 +1204,7 @@ bool ASTUnit::Parse(std::shared_ptr<PCHContainerOperations> PCHContainerOps,
12041204

12051205
// Set up diagnostics, capturing any diagnostics that would
12061206
// otherwise be dropped.
1207-
Clang->setDiagnostics(&getDiagnostics());
1207+
Clang->setDiagnostics(getDiagnosticsPtr());
12081208

12091209
// Create the target instance.
12101210
if (!Clang->createTarget())
@@ -1424,7 +1424,7 @@ ASTUnit::getMainBufferWithPrecompiledPreamble(
14241424
PreambleInvocationIn.getFrontendOpts().SkipFunctionBodies = true;
14251425

14261426
llvm::ErrorOr<PrecompiledPreamble> NewPreamble = PrecompiledPreamble::Build(
1427-
PreambleInvocationIn, MainFileBuffer.get(), Bounds, *Diagnostics, VFS,
1427+
PreambleInvocationIn, MainFileBuffer.get(), Bounds, Diagnostics, VFS,
14281428
PCHContainerOps, StorePreamblesInMemory, PreambleStoragePath,
14291429
Callbacks);
14301430

@@ -1624,7 +1624,7 @@ ASTUnit *ASTUnit::LoadFromCompilerInvocationAction(
16241624

16251625
// Set up diagnostics, capturing any diagnostics that would
16261626
// otherwise be dropped.
1627-
Clang->setDiagnostics(&AST->getDiagnostics());
1627+
Clang->setDiagnostics(AST->getDiagnosticsPtr());
16281628

16291629
// Create the target instance.
16301630
if (!Clang->createTarget())
@@ -2209,8 +2209,9 @@ void ASTUnit::CodeComplete(
22092209
bool IncludeCodePatterns, bool IncludeBriefComments,
22102210
CodeCompleteConsumer &Consumer,
22112211
std::shared_ptr<PCHContainerOperations> PCHContainerOps,
2212-
DiagnosticsEngine &Diag, LangOptions &LangOpts, SourceManager &SourceMgr,
2213-
FileManager &FileMgr, SmallVectorImpl<StoredDiagnostic> &StoredDiagnostics,
2212+
llvm::IntrusiveRefCntPtr<DiagnosticsEngine> Diag, LangOptions &LangOpts,
2213+
SourceManager &SourceMgr, FileManager &FileMgr,
2214+
SmallVectorImpl<StoredDiagnostic> &StoredDiagnostics,
22142215
SmallVectorImpl<const llvm::MemoryBuffer *> &OwnedBuffers,
22152216
std::unique_ptr<SyntaxOnlyAction> Act) {
22162217
if (!Invocation)
@@ -2259,11 +2260,11 @@ void ASTUnit::CodeComplete(
22592260
std::string(Clang->getFrontendOpts().Inputs[0].getFile());
22602261

22612262
// Set up diagnostics, capturing any diagnostics produced.
2262-
Clang->setDiagnostics(&Diag);
2263+
Clang->setDiagnostics(Diag);
22632264
CaptureDroppedDiagnostics Capture(CaptureDiagsKind::All,
22642265
Clang->getDiagnostics(),
22652266
&StoredDiagnostics, nullptr);
2266-
ProcessWarningOptions(Diag, Inv.getDiagnosticOpts(),
2267+
ProcessWarningOptions(*Diag, Inv.getDiagnosticOpts(),
22672268
FileMgr.getVirtualFileSystem());
22682269

22692270
// Create the target instance.

clang/lib/Frontend/ChainedIncludesSource.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,12 @@ IntrusiveRefCntPtr<ExternalSemaSource> clang::createChainedIncludesSource(
118118

119119
TextDiagnosticPrinter *DiagClient =
120120
new TextDiagnosticPrinter(llvm::errs(), CI.getDiagnosticOpts());
121-
IntrusiveRefCntPtr<DiagnosticsEngine> Diags(new DiagnosticsEngine(
122-
DiagnosticIDs::create(), CI.getDiagnosticOpts(), DiagClient));
121+
auto Diags = llvm::makeIntrusiveRefCnt<DiagnosticsEngine>(
122+
DiagnosticIDs::create(), CI.getDiagnosticOpts(), DiagClient);
123123

124124
auto Clang = std::make_unique<CompilerInstance>(
125125
std::move(CInvok), CI.getPCHContainerOperations());
126-
Clang->setDiagnostics(Diags.get());
126+
Clang->setDiagnostics(Diags);
127127
Clang->setTarget(TargetInfo::CreateTargetInfo(
128128
Clang->getDiagnostics(), Clang->getInvocation().getTargetOpts()));
129129
Clang->createFileManager();

clang/lib/Frontend/CompilerInstance.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,9 @@ bool CompilerInstance::shouldBuildGlobalModuleIndex() const {
8787
!DisableGeneratingGlobalModuleIndex;
8888
}
8989

90-
void CompilerInstance::setDiagnostics(DiagnosticsEngine *Value) {
91-
Diagnostics = Value;
90+
void CompilerInstance::setDiagnostics(
91+
llvm::IntrusiveRefCntPtr<DiagnosticsEngine> Value) {
92+
Diagnostics = std::move(Value);
9293
}
9394

9495
void CompilerInstance::setVerboseOutputStream(raw_ostream &Value) {
@@ -345,8 +346,8 @@ IntrusiveRefCntPtr<DiagnosticsEngine> CompilerInstance::createDiagnostics(
345346
llvm::vfs::FileSystem &VFS, DiagnosticOptions &Opts,
346347
DiagnosticConsumer *Client, bool ShouldOwnClient,
347348
const CodeGenOptions *CodeGenOpts) {
348-
IntrusiveRefCntPtr<DiagnosticsEngine> Diags(
349-
new DiagnosticsEngine(DiagnosticIDs::create(), Opts));
349+
auto Diags = llvm::makeIntrusiveRefCnt<DiagnosticsEngine>(
350+
DiagnosticIDs::create(), Opts);
350351

351352
// Create the diagnostic client for reporting errors or for
352353
// implementing -verify.

clang/lib/Frontend/FrontendAction.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -763,11 +763,11 @@ bool FrontendAction::BeginSourceFile(CompilerInstance &CI,
763763
// If we're replaying the build of an AST file, import it and set up
764764
// the initial state from its build.
765765
if (ReplayASTFile) {
766-
IntrusiveRefCntPtr<DiagnosticsEngine> Diags(&CI.getDiagnostics());
766+
IntrusiveRefCntPtr<DiagnosticsEngine> Diags = CI.getDiagnosticsPtr();
767767

768768
// The AST unit populates its own diagnostics engine rather than ours.
769-
IntrusiveRefCntPtr<DiagnosticsEngine> ASTDiags(new DiagnosticsEngine(
770-
Diags->getDiagnosticIDs(), Diags->getDiagnosticOptions()));
769+
auto ASTDiags = llvm::makeIntrusiveRefCnt<DiagnosticsEngine>(
770+
Diags->getDiagnosticIDs(), Diags->getDiagnosticOptions());
771771
ASTDiags->setClient(Diags->getClient(), /*OwnsClient*/false);
772772

773773
// FIXME: What if the input is a memory buffer?
@@ -835,7 +835,7 @@ bool FrontendAction::BeginSourceFile(CompilerInstance &CI,
835835
assert(hasASTFileSupport() &&
836836
"This action does not have AST file support!");
837837

838-
IntrusiveRefCntPtr<DiagnosticsEngine> Diags(&CI.getDiagnostics());
838+
IntrusiveRefCntPtr<DiagnosticsEngine> Diags = CI.getDiagnosticsPtr();
839839

840840
// FIXME: What if the input is a memory buffer?
841841
StringRef InputFile = Input.getFile();

clang/lib/Frontend/PrecompiledPreamble.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ PrecompiledPreamble::operator=(PrecompiledPreamble &&) = default;
412412
llvm::ErrorOr<PrecompiledPreamble> PrecompiledPreamble::Build(
413413
const CompilerInvocation &Invocation,
414414
const llvm::MemoryBuffer *MainFileBuffer, PreambleBounds Bounds,
415-
DiagnosticsEngine &Diagnostics,
415+
IntrusiveRefCntPtr<DiagnosticsEngine> Diagnostics,
416416
IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS,
417417
std::shared_ptr<PCHContainerOperations> PCHContainerOps, bool StoreInMemory,
418418
StringRef StoragePath, PreambleCallbacks &Callbacks) {
@@ -461,7 +461,7 @@ llvm::ErrorOr<PrecompiledPreamble> PrecompiledPreamble::Build(
461461
llvm::CrashRecoveryContextCleanupRegistrar<CompilerInstance> CICleanup(
462462
Clang.get());
463463

464-
Clang->setDiagnostics(&Diagnostics);
464+
Clang->setDiagnostics(Diagnostics);
465465

466466
// Create the target instance.
467467
if (!Clang->createTarget())
@@ -476,18 +476,18 @@ llvm::ErrorOr<PrecompiledPreamble> PrecompiledPreamble::Build(
476476
}
477477

478478
// Clear out old caches and data.
479-
Diagnostics.Reset();
480-
ProcessWarningOptions(Diagnostics, Clang->getDiagnosticOpts(), *VFS);
479+
Diagnostics->Reset();
480+
ProcessWarningOptions(*Diagnostics, Clang->getDiagnosticOpts(), *VFS);
481481

482-
VFS =
483-
createVFSFromCompilerInvocation(Clang->getInvocation(), Diagnostics, VFS);
482+
VFS = createVFSFromCompilerInvocation(Clang->getInvocation(), *Diagnostics,
483+
VFS);
484484

485485
// Create a file manager object to provide access to and cache the filesystem.
486486
Clang->setFileManager(new FileManager(Clang->getFileSystemOpts(), VFS));
487487

488488
// Create the source manager.
489489
Clang->setSourceManager(
490-
new SourceManager(Diagnostics, Clang->getFileManager()));
490+
new SourceManager(*Diagnostics, Clang->getFileManager()));
491491

492492
auto PreambleDepCollector = std::make_shared<PreambleDependencyCollector>();
493493
Clang->addDependencyCollector(PreambleDepCollector);

0 commit comments

Comments
 (0)