@@ -105,44 +105,20 @@ static void reportOptRecordError(Error E, DiagnosticsEngine &Diags,
105105 });
106106}
107107
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)
108+ BackendConsumer::BackendConsumer (
109+ const CompilerInstance &CI, BackendAction Action,
110+ IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS, LLVMContext &C,
111+ SmallVector<LinkModule, 4 > LinkModules, StringRef InFile,
112+ std::unique_ptr<raw_pwrite_stream> OS, CoverageSourceInfo *CoverageInfo,
113+ llvm::Module *CurLinkModule)
116114 : Diags(CI.getDiagnostics()), HeaderSearchOpts(CI.getHeaderSearchOpts()),
117115 CodeGenOpts (CI.getCodeGenOpts()), TargetOpts(CI.getTargetOpts()),
118116 LangOpts(CI.getLangOpts()), AsmOutStream(std::move(OS)), FS(VFS),
119117 LLVMIRGeneration(" irgen" , " LLVM IR Generation Time" ), Action(Action),
120118 Gen(CreateLLVMCodeGen(Diags, InFile, std::move(VFS),
121119 CI.getHeaderSearchOpts(), CI.getPreprocessorOpts(),
122120 CI.getCodeGenOpts(), C, CoverageInfo)),
123- LinkModules(std::move(LinkModules)) {
124- TimerIsEnabled = CodeGenOpts.TimePasses ;
125- llvm::TimePassesIsEnabled = CodeGenOpts.TimePasses ;
126- llvm::TimePassesPerRun = CodeGenOpts.TimePassesPerRun ;
127- }
128-
129- // This constructor is used in installing an empty BackendConsumer
130- // to use the clang diagnostic handler for IR input files. It avoids
131- // initializing the OS field.
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)),
145- LinkModules(std::move(LinkModules)), CurLinkModule(Module) {
121+ LinkModules(std::move(LinkModules)), CurLinkModule(CurLinkModule) {
146122 TimerIsEnabled = CodeGenOpts.TimePasses ;
147123 llvm::TimePassesIsEnabled = CodeGenOpts.TimePasses ;
148124 llvm::TimePassesPerRun = CodeGenOpts.TimePassesPerRun ;
@@ -1008,8 +984,8 @@ CodeGenAction::CreateASTConsumer(CompilerInstance &CI, StringRef InFile) {
1008984 CI.getPreprocessor ());
1009985
1010986 std::unique_ptr<BackendConsumer> Result (new BackendConsumer (
1011- CI, BA, &CI.getVirtualFileSystem (), std::string (InFile ),
1012- std::move (LinkModules) , std::move (OS), *VMContext , CoverageInfo));
987+ CI, BA, &CI.getVirtualFileSystem (), *VMContext, std::move (LinkModules ),
988+ InFile , std::move (OS), CoverageInfo));
1013989 BEConsumer = Result.get ();
1014990
1015991 // Enable generating macro debug info only when debug info is not disabled and
@@ -1177,8 +1153,9 @@ void CodeGenAction::ExecuteAction() {
11771153
11781154 // Set clang diagnostic handler. To do this we need to create a fake
11791155 // BackendConsumer.
1180- BackendConsumer Result (CI, BA, &CI.getVirtualFileSystem (), TheModule.get (),
1181- std::move (LinkModules), *VMContext);
1156+ BackendConsumer Result (CI, BA, &CI.getVirtualFileSystem (), *VMContext,
1157+ std::move (LinkModules), " " , nullptr , nullptr ,
1158+ TheModule.get ());
11821159
11831160 // Link in each pending link module.
11841161 if (!CodeGenOpts.LinkBitcodePostopt && Result.LinkInModules (&*TheModule))
0 commit comments