diff options
author | Jan Svoboda <jan_svoboda@apple.com> | 2025-04-29 10:37:37 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-04-29 10:37:37 -0700 |
commit | c85e43bd45fee5de106d79965db484339b5cc46f (patch) | |
tree | 1a8a698334d01238f3491b2ac07414c3b99f8240 /clang/lib | |
parent | 0f90a7b323bcaa087be31aa135b71694db2d5ff9 (diff) | |
download | llvm-c85e43bd45fee5de106d79965db484339b5cc46f.zip llvm-c85e43bd45fee5de106d79965db484339b5cc46f.tar.gz llvm-c85e43bd45fee5de106d79965db484339b5cc46f.tar.bz2 |
[clang] Hide the `LangOptions` pointer from `CompilerInvocation` (#137675)
This PR makes `CompilerInvocation` the sole owner of the `LangOptions`
instance.
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Frontend/ASTUnit.cpp | 10 | ||||
-rw-r--r-- | clang/lib/Frontend/FrontendAction.cpp | 2 |
2 files changed, 7 insertions, 5 deletions
diff --git a/clang/lib/Frontend/ASTUnit.cpp b/clang/lib/Frontend/ASTUnit.cpp index 3e4da76..e05385d 100644 --- a/clang/lib/Frontend/ASTUnit.cpp +++ b/clang/lib/Frontend/ASTUnit.cpp @@ -805,7 +805,7 @@ std::unique_ptr<ASTUnit> ASTUnit::LoadFromASTFile( StringRef Filename, const PCHContainerReader &PCHContainerRdr, WhatToLoad ToLoad, IntrusiveRefCntPtr<DiagnosticsEngine> Diags, const FileSystemOptions &FileSystemOpts, const HeaderSearchOptions &HSOpts, - std::shared_ptr<LangOptions> LangOpts, bool OnlyLocalDecls, + const LangOptions *LangOpts, bool OnlyLocalDecls, CaptureDiagsKind CaptureDiagnostics, bool AllowASTWithCompilerErrors, bool UserFilesAreVolatile, IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS) { std::unique_ptr<ASTUnit> AST(new ASTUnit(true)); @@ -819,7 +819,8 @@ std::unique_ptr<ASTUnit> ASTUnit::LoadFromASTFile( ConfigureDiags(Diags, *AST, CaptureDiagnostics); - AST->LangOpts = LangOpts ? LangOpts : std::make_shared<LangOptions>(); + AST->LangOpts = LangOpts ? std::make_unique<LangOptions>(*LangOpts) + : std::make_unique<LangOptions>(); AST->OnlyLocalDecls = OnlyLocalDecls; AST->CaptureDiagnostics = CaptureDiagnostics; AST->Diagnostics = Diags; @@ -1211,7 +1212,8 @@ bool ASTUnit::Parse(std::shared_ptr<PCHContainerOperations> PCHContainerOps, "IR inputs not support here!"); // Configure the various subsystems. - LangOpts = Clang->getInvocation().LangOpts; + LangOpts = + std::make_unique<LangOptions>(Clang->getInvocation().getLangOpts()); FileSystemOpts = Clang->getFileSystemOpts(); ResetForParse(); @@ -1486,7 +1488,7 @@ void ASTUnit::transferASTDataFromCompilerInstance(CompilerInstance &CI) { // Steal the created target, context, and preprocessor if they have been // created. assert(CI.hasInvocation() && "missing invocation"); - LangOpts = CI.getInvocation().LangOpts; + LangOpts = std::make_unique<LangOptions>(CI.getInvocation().getLangOpts()); TheSema = CI.takeSema(); Consumer = CI.takeASTConsumer(); if (CI.hasASTContext()) diff --git a/clang/lib/Frontend/FrontendAction.cpp b/clang/lib/Frontend/FrontendAction.cpp index 783d1a64..9b2aa25 100644 --- a/clang/lib/Frontend/FrontendAction.cpp +++ b/clang/lib/Frontend/FrontendAction.cpp @@ -847,7 +847,7 @@ bool FrontendAction::BeginSourceFile(CompilerInstance &CI, std::unique_ptr<ASTUnit> AST = ASTUnit::LoadFromASTFile( InputFile, CI.getPCHContainerReader(), ASTUnit::LoadEverything, Diags, - CI.getFileSystemOpts(), CI.getHeaderSearchOpts(), CI.getLangOptsPtr()); + CI.getFileSystemOpts(), CI.getHeaderSearchOpts(), &CI.getLangOpts()); if (!AST) return false; |