Skip to content

Commit

Permalink
[clang] NFCI: Change returned LanguageOptions pointer to reference
Browse files Browse the repository at this point in the history
  • Loading branch information
jansvoboda11 committed Sep 5, 2023
1 parent b0cbf3a commit 5746002
Show file tree
Hide file tree
Showing 20 changed files with 118 additions and 122 deletions.
4 changes: 2 additions & 2 deletions clang-tools-extra/clangd/ClangdServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ struct UpdateIndexCallbacks : public ParsingCallbacks {

auto &PP = ASTCtx.getPreprocessor();
auto &CI = ASTCtx.getCompilerInvocation();
if (auto Loc = Stdlib->add(*CI.getLangOpts(), PP.getHeaderSearchInfo()))
if (auto Loc = Stdlib->add(CI.getLangOpts(), PP.getHeaderSearchInfo()))
indexStdlib(CI, std::move(*Loc));

// FIndex outlives the UpdateIndexCallbacks.
Expand All @@ -105,7 +105,7 @@ struct UpdateIndexCallbacks : public ParsingCallbacks {
// This task is owned by Tasks, which outlives the TUScheduler and
// therefore the UpdateIndexCallbacks.
// We must be careful that the references we capture outlive TUScheduler.
auto Task = [LO(*CI.getLangOpts()), Loc(std::move(Loc)),
auto Task = [LO(CI.getLangOpts()), Loc(std::move(Loc)),
CI(std::make_unique<CompilerInvocation>(CI)),
// External values that outlive ClangdServer
TFS(&TFS),
Expand Down
6 changes: 3 additions & 3 deletions clang-tools-extra/clangd/CodeComplete.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1356,11 +1356,11 @@ bool semaCodeComplete(std::unique_ptr<CodeCompleteConsumer> Consumer,
auto &FrontendOpts = CI->getFrontendOpts();
FrontendOpts.SkipFunctionBodies = true;
// Disable typo correction in Sema.
CI->getLangOpts()->SpellChecking = false;
CI->getLangOpts().SpellChecking = false;
// Code completion won't trigger in delayed template bodies.
// This is on-by-default in windows to allow parsing SDK headers; we're only
// disabling it for the main-file (not preamble).
CI->getLangOpts()->DelayedTemplateParsing = false;
CI->getLangOpts().DelayedTemplateParsing = false;
// Setup code completion.
FrontendOpts.CodeCompleteOpts = Options;
FrontendOpts.CodeCompletionAt.FileName = std::string(Input.FileName);
Expand All @@ -1380,7 +1380,7 @@ bool semaCodeComplete(std::unique_ptr<CodeCompleteConsumer> Consumer,
// overriding the preamble will break sema completion. Fortunately we can just
// skip all includes in this case; these completions are really simple.
PreambleBounds PreambleRegion =
ComputePreambleBounds(*CI->getLangOpts(), *ContentsBuffer, 0);
ComputePreambleBounds(CI->getLangOpts(), *ContentsBuffer, 0);
bool CompletingInPreamble = Input.Offset < PreambleRegion.Size ||
(!PreambleRegion.PreambleEndsAtStartOfLine &&
Input.Offset == PreambleRegion.Size);
Expand Down
14 changes: 7 additions & 7 deletions clang-tools-extra/clangd/Compiler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -84,11 +84,11 @@ void disableUnsupportedOptions(CompilerInvocation &CI) {
// These options mostly affect codegen, and aren't relevant to clangd. And
// clang will die immediately when these files are not existed.
// Disable these uninteresting options to make clangd more robust.
CI.getLangOpts()->NoSanitizeFiles.clear();
CI.getLangOpts()->XRayAttrListFiles.clear();
CI.getLangOpts()->ProfileListFiles.clear();
CI.getLangOpts()->XRayAlwaysInstrumentFiles.clear();
CI.getLangOpts()->XRayNeverInstrumentFiles.clear();
CI.getLangOpts().NoSanitizeFiles.clear();
CI.getLangOpts().XRayAttrListFiles.clear();
CI.getLangOpts().ProfileListFiles.clear();
CI.getLangOpts().XRayAlwaysInstrumentFiles.clear();
CI.getLangOpts().XRayNeverInstrumentFiles.clear();
}

std::unique_ptr<CompilerInvocation>
Expand Down Expand Up @@ -118,8 +118,8 @@ buildCompilerInvocation(const ParseInputs &Inputs, clang::DiagnosticConsumer &D,
return nullptr;
// createInvocationFromCommandLine sets DisableFree.
CI->getFrontendOpts().DisableFree = false;
CI->getLangOpts()->CommentOpts.ParseAllComments = true;
CI->getLangOpts()->RetainCommentsFromSystemHeaders = true;
CI->getLangOpts().CommentOpts.ParseAllComments = true;
CI->getLangOpts().RetainCommentsFromSystemHeaders = true;

disableUnsupportedOptions(*CI);
return CI;
Expand Down
2 changes: 1 addition & 1 deletion clang-tools-extra/clangd/ParsedAST.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -413,7 +413,7 @@ ParsedAST::build(llvm::StringRef Filename, const ParseInputs &Inputs,

// This is on-by-default in windows to allow parsing SDK headers, but it
// breaks many features. Disable it for the main-file (not preamble).
CI->getLangOpts()->DelayedTemplateParsing = false;
CI->getLangOpts().DelayedTemplateParsing = false;

std::vector<std::unique_ptr<FeatureModule::ASTListener>> ASTListeners;
if (Inputs.FeatureModules) {
Expand Down
8 changes: 4 additions & 4 deletions clang-tools-extra/clangd/Preamble.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,7 @@ scanPreamble(llvm::StringRef Contents, const tooling::CompileCommand &Cmd) {
// This means we're scanning (though not preprocessing) the preamble section
// twice. However, it's important to precisely follow the preamble bounds used
// elsewhere.
auto Bounds = ComputePreambleBounds(*CI->getLangOpts(), *ContentsBuffer, 0);
auto Bounds = ComputePreambleBounds(CI->getLangOpts(), *ContentsBuffer, 0);
auto PreambleContents = llvm::MemoryBuffer::getMemBufferCopy(
llvm::StringRef(PI.Contents).take_front(Bounds.Size));
auto Clang = prepareCompilerInstance(
Expand Down Expand Up @@ -596,7 +596,7 @@ buildPreamble(PathRef FileName, CompilerInvocation CI,
// without those.
auto ContentsBuffer =
llvm::MemoryBuffer::getMemBuffer(Inputs.Contents, FileName);
auto Bounds = ComputePreambleBounds(*CI.getLangOpts(), *ContentsBuffer, 0);
auto Bounds = ComputePreambleBounds(CI.getLangOpts(), *ContentsBuffer, 0);

trace::Span Tracer("BuildPreamble");
SPAN_ATTACH(Tracer, "File", FileName);
Expand All @@ -622,7 +622,7 @@ buildPreamble(PathRef FileName, CompilerInvocation CI,
const clang::Diagnostic &Info) {
if (Cfg.Diagnostics.SuppressAll ||
isBuiltinDiagnosticSuppressed(Info.getID(), Cfg.Diagnostics.Suppress,
*CI.getLangOpts()))
CI.getLangOpts()))
return DiagnosticsEngine::Ignored;
switch (Info.getID()) {
case diag::warn_no_newline_eof:
Expand Down Expand Up @@ -732,7 +732,7 @@ bool isPreambleCompatible(const PreambleData &Preamble,
const CompilerInvocation &CI) {
auto ContentsBuffer =
llvm::MemoryBuffer::getMemBuffer(Inputs.Contents, FileName);
auto Bounds = ComputePreambleBounds(*CI.getLangOpts(), *ContentsBuffer, 0);
auto Bounds = ComputePreambleBounds(CI.getLangOpts(), *ContentsBuffer, 0);
auto VFS = Inputs.TFS->view(Inputs.CompileCommand.Directory);
return compileCommandsAreEqual(Inputs.CompileCommand,
Preamble.CompileCommand) &&
Expand Down
4 changes: 2 additions & 2 deletions clang-tools-extra/clangd/index/StdLib.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ SymbolSlab indexStandardLibrary(llvm::StringRef HeaderSources,
}
const FrontendInputFile &Input = CI->getFrontendOpts().Inputs.front();
trace::Span Tracer("StandardLibraryIndex");
LangStandard::Kind LangStd = standardFromOpts(*CI->getLangOpts());
LangStandard::Kind LangStd = standardFromOpts(CI->getLangOpts());
log("Indexing {0} standard library in the context of {1}",
LangStandard::getLangStandardForKind(LangStd).getName(), Input.getFile());

Expand Down Expand Up @@ -267,7 +267,7 @@ SymbolSlab indexStandardLibrary(llvm::StringRef HeaderSources,
SymbolSlab indexStandardLibrary(std::unique_ptr<CompilerInvocation> Invocation,
const StdLibLocation &Loc,
const ThreadsafeFS &TFS) {
llvm::StringRef Header = getStdlibUmbrellaHeader(*Invocation->getLangOpts());
llvm::StringRef Header = getStdlibUmbrellaHeader(Invocation->getLangOpts());
return indexStandardLibrary(Header, std::move(Invocation), Loc, TFS);
}

Expand Down
4 changes: 2 additions & 2 deletions clang-tools-extra/clangd/unittests/PreambleTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ collectPatchedIncludes(llvm::StringRef ModifiedContents,
// introduced by the patch is parsed and nothing else.
// We don't run PP directly over the patch cotents to test production
// behaviour.
auto Bounds = Lexer::ComputePreamble(ModifiedContents, *CI->getLangOpts());
auto Bounds = Lexer::ComputePreamble(ModifiedContents, CI->getLangOpts());
auto Clang =
prepareCompilerInstance(std::move(CI), &BaselinePreamble->Preamble,
llvm::MemoryBuffer::getMemBufferCopy(
Expand Down Expand Up @@ -588,7 +588,7 @@ TEST(PreamblePatch, ModifiedBounds) {
ASSERT_TRUE(CI);

const auto ExpectedBounds =
Lexer::ComputePreamble(Case.Modified, *CI->getLangOpts());
Lexer::ComputePreamble(Case.Modified, CI->getLangOpts());
EXPECT_EQ(PP.modifiedBounds().Size, ExpectedBounds.Size);
EXPECT_EQ(PP.modifiedBounds().PreambleEndsAtStartOfLine,
ExpectedBounds.PreambleEndsAtStartOfLine);
Expand Down
8 changes: 2 additions & 6 deletions clang/include/clang/Frontend/CompilerInstance.h
Original file line number Diff line number Diff line change
Expand Up @@ -301,12 +301,8 @@ class CompilerInstance : public ModuleLoader {
return Invocation->getHeaderSearchOptsPtr();
}

LangOptions &getLangOpts() {
return *Invocation->getLangOpts();
}
const LangOptions &getLangOpts() const {
return *Invocation->getLangOpts();
}
LangOptions &getLangOpts() { return Invocation->getLangOpts(); }
const LangOptions &getLangOpts() const { return Invocation->getLangOpts(); }

PreprocessorOptions &getPreprocessorOpts() {
return Invocation->getPreprocessorOpts();
Expand Down
4 changes: 2 additions & 2 deletions clang/include/clang/Frontend/CompilerInvocation.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,8 @@ class CompilerInvocationRefBase {
CompilerInvocationRefBase &operator=(CompilerInvocationRefBase &&X);
~CompilerInvocationRefBase();

LangOptions *getLangOpts() { return LangOpts.get(); }
const LangOptions *getLangOpts() const { return LangOpts.get(); }
LangOptions &getLangOpts() { return *LangOpts; }
const LangOptions &getLangOpts() const { return *LangOpts; }

TargetOptions &getTargetOpts() { return *TargetOpts.get(); }
const TargetOptions &getTargetOpts() const { return *TargetOpts.get(); }
Expand Down
20 changes: 10 additions & 10 deletions clang/lib/ARCMigrate/ARCMT.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -191,8 +191,8 @@ createInvocationForMigration(CompilerInvocation &origCI,
std::string define = std::string(getARCMTMacroName());
define += '=';
CInvok->getPreprocessorOpts().addMacroDef(define);
CInvok->getLangOpts()->ObjCAutoRefCount = true;
CInvok->getLangOpts()->setGC(LangOptions::NonGC);
CInvok->getLangOpts().ObjCAutoRefCount = true;
CInvok->getLangOpts().setGC(LangOptions::NonGC);
CInvok->getDiagnosticOpts().ErrorLimit = 0;
CInvok->getDiagnosticOpts().PedanticErrors = 0;

Expand All @@ -207,8 +207,8 @@ createInvocationForMigration(CompilerInvocation &origCI,
WarnOpts.push_back("error=arc-unsafe-retained-assign");
CInvok->getDiagnosticOpts().Warnings = std::move(WarnOpts);

CInvok->getLangOpts()->ObjCWeakRuntime = HasARCRuntime(origCI);
CInvok->getLangOpts()->ObjCWeak = CInvok->getLangOpts()->ObjCWeakRuntime;
CInvok->getLangOpts().ObjCWeakRuntime = HasARCRuntime(origCI);
CInvok->getLangOpts().ObjCWeak = CInvok->getLangOpts().ObjCWeakRuntime;

return CInvok.release();
}
Expand Down Expand Up @@ -237,10 +237,10 @@ bool arcmt::checkForManualIssues(
std::shared_ptr<PCHContainerOperations> PCHContainerOps,
DiagnosticConsumer *DiagClient, bool emitPremigrationARCErrors,
StringRef plistOut) {
if (!origCI.getLangOpts()->ObjC)
if (!origCI.getLangOpts().ObjC)
return false;

LangOptions::GCMode OrigGCMode = origCI.getLangOpts()->getGC();
LangOptions::GCMode OrigGCMode = origCI.getLangOpts().getGC();
bool NoNSAllocReallocError = origCI.getMigratorOpts().NoNSAllocReallocError;
bool NoFinalizeRemoval = origCI.getMigratorOpts().NoFinalizeRemoval;

Expand Down Expand Up @@ -338,10 +338,10 @@ applyTransforms(CompilerInvocation &origCI, const FrontendInputFile &Input,
std::shared_ptr<PCHContainerOperations> PCHContainerOps,
DiagnosticConsumer *DiagClient, StringRef outputDir,
bool emitPremigrationARCErrors, StringRef plistOut) {
if (!origCI.getLangOpts()->ObjC)
if (!origCI.getLangOpts().ObjC)
return false;

LangOptions::GCMode OrigGCMode = origCI.getLangOpts()->getGC();
LangOptions::GCMode OrigGCMode = origCI.getLangOpts().getGC();

// Make sure checking is successful first.
CompilerInvocation CInvokForCheck(origCI);
Expand Down Expand Up @@ -372,7 +372,7 @@ applyTransforms(CompilerInvocation &origCI, const FrontendInputFile &Input,
DiagClient, /*ShouldOwnClient=*/false));

if (outputDir.empty()) {
origCI.getLangOpts()->ObjCAutoRefCount = true;
origCI.getLangOpts().ObjCAutoRefCount = true;
return migration.getRemapper().overwriteOriginal(*Diags);
} else {
return migration.getRemapper().flushToDisk(outputDir, *Diags);
Expand Down Expand Up @@ -577,7 +577,7 @@ bool MigrationProcess::applyTransform(TransformFn trans,

Rewriter rewriter(Ctx.getSourceManager(), Ctx.getLangOpts());
TransformActions TA(*Diags, capturedDiags, Ctx, Unit->getPreprocessor());
MigrationPass pass(Ctx, OrigCI.getLangOpts()->getGC(),
MigrationPass pass(Ctx, OrigCI.getLangOpts().getGC(),
Unit->getSema(), TA, capturedDiags, ARCMTMacroLocs);

trans(pass);
Expand Down
4 changes: 2 additions & 2 deletions clang/lib/Frontend/ASTUnit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1335,7 +1335,7 @@ ASTUnit::getMainBufferWithPrecompiledPreamble(
return nullptr;

PreambleBounds Bounds = ComputePreambleBounds(
*PreambleInvocationIn.getLangOpts(), *MainFileBuffer, MaxLines);
PreambleInvocationIn.getLangOpts(), *MainFileBuffer, MaxLines);
if (!Bounds.Size)
return nullptr;

Expand Down Expand Up @@ -2198,7 +2198,7 @@ void ASTUnit::CodeComplete(
FrontendOpts.CodeCompletionAt.Column = Column;

// Set the language options appropriately.
LangOpts = *CCInvocation->getLangOpts();
LangOpts = CCInvocation->getLangOpts();

// Spell-checking and warnings are wasteful during code-completion.
LangOpts.SpellChecking = false;
Expand Down
8 changes: 4 additions & 4 deletions clang/lib/Frontend/CompilerInstance.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1185,11 +1185,11 @@ compileModuleImpl(CompilerInstance &ImportingInstance, SourceLocation ImportLoc,
});

// If the original compiler invocation had -fmodule-name, pass it through.
Invocation->getLangOpts()->ModuleName =
ImportingInstance.getInvocation().getLangOpts()->ModuleName;
Invocation->getLangOpts().ModuleName =
ImportingInstance.getInvocation().getLangOpts().ModuleName;

// Note the name of the module we're building.
Invocation->getLangOpts()->CurrentModule = std::string(ModuleName);
Invocation->getLangOpts().CurrentModule = std::string(ModuleName);

// Make sure that the failed-module structure has been allocated in
// the importing instance, and propagate the pointer to the newly-created
Expand Down Expand Up @@ -2175,7 +2175,7 @@ void CompilerInstance::createModuleFromSource(SourceLocation ImportLoc,

FrontendInputFile Input(
ModuleMapFileName,
InputKind(getLanguageFromOptions(*Invocation->getLangOpts()),
InputKind(getLanguageFromOptions(Invocation->getLangOpts()),
InputKind::ModuleMap, /*Preprocessed*/true));

std::string NullTerminatedSource(Source.str());
Expand Down
12 changes: 6 additions & 6 deletions clang/lib/Frontend/CompilerInvocation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ CompilerInvocationRefBase::CompilerInvocationRefBase()

CompilerInvocationRefBase::CompilerInvocationRefBase(
const CompilerInvocationRefBase &X)
: LangOpts(new LangOptions(*X.getLangOpts())),
: LangOpts(new LangOptions(X.getLangOpts())),
TargetOpts(new TargetOptions(X.getTargetOpts())),
DiagnosticOpts(new DiagnosticOptions(X.getDiagnosticOpts())),
HeaderSearchOpts(new HeaderSearchOptions(X.getHeaderSearchOpts())),
Expand Down Expand Up @@ -461,7 +461,7 @@ static bool FixupInvocation(CompilerInvocation &Invocation,
InputKind IK) {
unsigned NumErrorsBefore = Diags.getNumErrors();

LangOptions &LangOpts = *Invocation.getLangOpts();
LangOptions &LangOpts = Invocation.getLangOpts();
CodeGenOptions &CodeGenOpts = Invocation.getCodeGenOpts();
TargetOptions &TargetOpts = Invocation.getTargetOpts();
FrontendOptions &FrontendOpts = Invocation.getFrontendOpts();
Expand Down Expand Up @@ -4365,7 +4365,7 @@ bool CompilerInvocation::CreateFromArgsImpl(
unsigned MissingArgIndex, MissingArgCount;
InputArgList Args = Opts.ParseArgs(CommandLineArgs, MissingArgIndex,
MissingArgCount, VisibilityMask);
LangOptions &LangOpts = *Res.getLangOpts();
LangOptions &LangOpts = Res.getLangOpts();

// Check for missing argument error.
if (MissingArgCount)
Expand Down Expand Up @@ -4446,7 +4446,7 @@ bool CompilerInvocation::CreateFromArgsImpl(

// If sanitizer is enabled, disable OPT_ffine_grained_bitfield_accesses.
if (Res.getCodeGenOpts().FineGrainedBitfieldAccesses &&
!Res.getLangOpts()->Sanitize.empty()) {
!Res.getLangOpts().Sanitize.empty()) {
Res.getCodeGenOpts().FineGrainedBitfieldAccesses = false;
Diags.Report(diag::warn_drv_fine_grained_bitfield_accesses_ignored);
}
Expand Down Expand Up @@ -4617,12 +4617,12 @@ std::vector<std::string> CompilerInvocation::getCC1CommandLine() const {
}

void CompilerInvocation::resetNonModularOptions() {
getLangOpts()->resetNonModularOptions();
getLangOpts().resetNonModularOptions();
getPreprocessorOpts().resetNonModularOptions();
}

void CompilerInvocation::clearImplicitModuleBuildOptions() {
getLangOpts()->ImplicitModules = false;
getLangOpts().ImplicitModules = false;
getHeaderSearchOpts().ImplicitModuleMaps = false;
getHeaderSearchOpts().ModuleCachePath.clear();
getHeaderSearchOpts().ModulesValidateOncePerBuildSession = false;
Expand Down
2 changes: 1 addition & 1 deletion clang/lib/Frontend/PrecompiledPreamble.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -719,7 +719,7 @@ void PrecompiledPreamble::AddImplicitPreamble(
void PrecompiledPreamble::OverridePreamble(
CompilerInvocation &CI, IntrusiveRefCntPtr<llvm::vfs::FileSystem> &VFS,
llvm::MemoryBuffer *MainFileBuffer) const {
auto Bounds = ComputePreambleBounds(*CI.getLangOpts(), *MainFileBuffer, 0);
auto Bounds = ComputePreambleBounds(CI.getLangOpts(), *MainFileBuffer, 0);
configurePreamble(Bounds, CI, VFS, MainFileBuffer);
}

Expand Down
4 changes: 2 additions & 2 deletions clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ ModuleDepCollector::makeInvocationForModuleBuildWithoutOutputs(
// TODO: Figure out better way to set options to their default value.
CI.getCodeGenOpts().MainFileName.clear();
CI.getCodeGenOpts().DwarfDebugFlags.clear();
if (!CI.getLangOpts()->ModulesCodegen) {
if (!CI.getLangOpts().ModulesCodegen) {
CI.getCodeGenOpts().DebugCompilationDir.clear();
CI.getCodeGenOpts().CoverageCompilationDir.clear();
CI.getCodeGenOpts().CoverageDataFile.clear();
Expand All @@ -117,7 +117,7 @@ ModuleDepCollector::makeInvocationForModuleBuildWithoutOutputs(
CI.getFrontendOpts().ARCMTAction = FrontendOptions::ARCMT_None;
CI.getFrontendOpts().ObjCMTAction = FrontendOptions::ObjCMT_None;
CI.getFrontendOpts().MTMigrateDir.clear();
CI.getLangOpts()->ModuleName = Deps.ID.ModuleName;
CI.getLangOpts().ModuleName = Deps.ID.ModuleName;
CI.getFrontendOpts().IsSystemModule = Deps.IsSystem;

// Inputs
Expand Down
6 changes: 3 additions & 3 deletions clang/tools/arcmt-test/arcmt-test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ static bool checkForMigration(StringRef resourcesPath,
return true;
}

if (!CI.getLangOpts()->ObjC)
if (!CI.getLangOpts().ObjC)
return false;

arcmt::checkForManualIssues(CI, CI.getFrontendOpts().Inputs[0],
Expand Down Expand Up @@ -167,14 +167,14 @@ static bool performTransformations(StringRef resourcesPath,
return true;
}

if (!origCI.getLangOpts()->ObjC)
if (!origCI.getLangOpts().ObjC)
return false;

MigrationProcess migration(origCI, std::make_shared<PCHContainerOperations>(),
DiagClient);

std::vector<TransformFn>
transforms = arcmt::getAllTransformations(origCI.getLangOpts()->getGC(),
transforms = arcmt::getAllTransformations(origCI.getLangOpts().getGC(),
origCI.getMigratorOpts().NoFinalizeRemoval);
assert(!transforms.empty());

Expand Down

0 comments on commit 5746002

Please sign in to comment.