@@ -105,22 +105,21 @@ static void reportOptRecordError(Error E, DiagnosticsEngine &Diags,
105105 });
106106}
107107
108- BackendConsumer::BackendConsumer (
109- BackendAction Action, DiagnosticsEngine &Diags,
110- IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS,
111- const HeaderSearchOptions &HeaderSearchOpts,
112- const PreprocessorOptions &PPOpts, const CodeGenOptions &CodeGenOpts,
113- const TargetOptions &TargetOpts, const LangOptions &LangOpts,
114- const std::string &InFile, SmallVector<LinkModule, 4 > LinkModules,
115- std::unique_ptr<raw_pwrite_stream> OS, LLVMContext &C,
116- CoverageSourceInfo *CoverageInfo)
117- : Diags(Diags), Action(Action), HeaderSearchOpts(HeaderSearchOpts),
118- CodeGenOpts (CodeGenOpts), TargetOpts(TargetOpts), LangOpts(LangOpts),
119- AsmOutStream(std::move(OS)), Context(nullptr ), FS(VFS),
120- LLVMIRGeneration(" irgen" , " LLVM IR Generation Time" ),
121- LLVMIRGenerationRefCount(0 ),
122- Gen(CreateLLVMCodeGen(Diags, InFile, std::move(VFS), HeaderSearchOpts,
123- PPOpts, CodeGenOpts, C, CoverageInfo)),
108+ BackendConsumer::BackendConsumer (const CompilerInstance &CI,
109+ BackendAction Action,
110+ IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS,
111+ const std::string &InFile,
112+ SmallVector<LinkModule, 4 > LinkModules,
113+ std::unique_ptr<raw_pwrite_stream> OS,
114+ LLVMContext &C,
115+ CoverageSourceInfo *CoverageInfo)
116+ : Diags(CI.getDiagnostics()), HeaderSearchOpts(CI.getHeaderSearchOpts()),
117+ CodeGenOpts (CI.getCodeGenOpts()), TargetOpts(CI.getTargetOpts()),
118+ LangOpts(CI.getLangOpts()), AsmOutStream(std::move(OS)), FS(VFS),
119+ LLVMIRGeneration(" irgen" , " LLVM IR Generation Time" ), Action(Action),
120+ Gen(CreateLLVMCodeGen(Diags, InFile, std::move(VFS),
121+ CI.getHeaderSearchOpts(), CI.getPreprocessorOpts(),
122+ CI.getCodeGenOpts(), C, CoverageInfo)),
124123 LinkModules(std::move(LinkModules)) {
125124 TimerIsEnabled = CodeGenOpts.TimePasses ;
126125 llvm::TimePassesIsEnabled = CodeGenOpts.TimePasses ;
@@ -130,21 +129,19 @@ BackendConsumer::BackendConsumer(
130129// This constructor is used in installing an empty BackendConsumer
131130// to use the clang diagnostic handler for IR input files. It avoids
132131// initializing the OS field.
133- BackendConsumer::BackendConsumer (
134- BackendAction Action, DiagnosticsEngine &Diags,
135- IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS,
136- const HeaderSearchOptions &HeaderSearchOpts,
137- const PreprocessorOptions &PPOpts, const CodeGenOptions &CodeGenOpts,
138- const TargetOptions &TargetOpts, const LangOptions &LangOpts,
139- llvm::Module *Module, SmallVector<LinkModule, 4 > LinkModules,
140- LLVMContext &C, CoverageSourceInfo *CoverageInfo)
141- : Diags(Diags), Action(Action), HeaderSearchOpts(HeaderSearchOpts),
142- CodeGenOpts(CodeGenOpts), TargetOpts(TargetOpts), LangOpts(LangOpts),
143- Context(nullptr ), FS(VFS),
144- LLVMIRGeneration(" irgen" , " LLVM IR Generation Time" ),
145- LLVMIRGenerationRefCount(0 ),
146- Gen(CreateLLVMCodeGen(Diags, " " , std::move(VFS), HeaderSearchOpts, PPOpts,
147- CodeGenOpts, C, CoverageInfo)),
132+ BackendConsumer::BackendConsumer (const CompilerInstance &CI,
133+ BackendAction Action,
134+ IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS,
135+ llvm::Module *Module,
136+ SmallVector<LinkModule, 4 > LinkModules,
137+ LLVMContext &C)
138+ : Diags(CI.getDiagnostics()), HeaderSearchOpts(CI.getHeaderSearchOpts()),
139+ CodeGenOpts(CI.getCodeGenOpts()), TargetOpts(CI.getTargetOpts()),
140+ LangOpts(CI.getLangOpts()), FS(VFS),
141+ LLVMIRGeneration(" irgen" , " LLVM IR Generation Time" ), Action(Action),
142+ Gen(CreateLLVMCodeGen(Diags, " " , std::move(VFS), CI.getHeaderSearchOpts(),
143+ CI.getPreprocessorOpts(), CI.getCodeGenOpts(), C,
144+ nullptr)),
148145 LinkModules(std::move(LinkModules)), CurLinkModule(Module) {
149146 TimerIsEnabled = CodeGenOpts.TimePasses ;
150147 llvm::TimePassesIsEnabled = CodeGenOpts.TimePasses ;
@@ -1011,9 +1008,7 @@ CodeGenAction::CreateASTConsumer(CompilerInstance &CI, StringRef InFile) {
10111008 CI.getPreprocessor ());
10121009
10131010 std::unique_ptr<BackendConsumer> Result (new BackendConsumer (
1014- BA, CI.getDiagnostics (), &CI.getVirtualFileSystem (),
1015- CI.getHeaderSearchOpts (), CI.getPreprocessorOpts (), CI.getCodeGenOpts (),
1016- CI.getTargetOpts (), CI.getLangOpts (), std::string (InFile),
1011+ CI, BA, &CI.getVirtualFileSystem (), std::string (InFile),
10171012 std::move (LinkModules), std::move (OS), *VMContext, CoverageInfo));
10181013 BEConsumer = Result.get ();
10191014
@@ -1182,11 +1177,8 @@ void CodeGenAction::ExecuteAction() {
11821177
11831178 // Set clang diagnostic handler. To do this we need to create a fake
11841179 // BackendConsumer.
1185- BackendConsumer Result (BA, CI.getDiagnostics (), &CI.getVirtualFileSystem (),
1186- CI.getHeaderSearchOpts (), CI.getPreprocessorOpts (),
1187- CI.getCodeGenOpts (), CI.getTargetOpts (),
1188- CI.getLangOpts (), TheModule.get (),
1189- std::move (LinkModules), *VMContext, nullptr );
1180+ BackendConsumer Result (CI, BA, &CI.getVirtualFileSystem (), TheModule.get (),
1181+ std::move (LinkModules), *VMContext);
11901182
11911183 // Link in each pending link module.
11921184 if (!CodeGenOpts.LinkBitcodePostopt && Result.LinkInModules (&*TheModule))
0 commit comments