@@ -105,22 +105,21 @@ static void reportOptRecordError(Error E, DiagnosticsEngine &Diags,
105
105
});
106
106
}
107
107
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)),
124
123
LinkModules(std::move(LinkModules)) {
125
124
TimerIsEnabled = CodeGenOpts.TimePasses ;
126
125
llvm::TimePassesIsEnabled = CodeGenOpts.TimePasses ;
@@ -130,21 +129,19 @@ BackendConsumer::BackendConsumer(
130
129
// This constructor is used in installing an empty BackendConsumer
131
130
// to use the clang diagnostic handler for IR input files. It avoids
132
131
// 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)),
148
145
LinkModules(std::move(LinkModules)), CurLinkModule(Module) {
149
146
TimerIsEnabled = CodeGenOpts.TimePasses ;
150
147
llvm::TimePassesIsEnabled = CodeGenOpts.TimePasses ;
@@ -1011,9 +1008,7 @@ CodeGenAction::CreateASTConsumer(CompilerInstance &CI, StringRef InFile) {
1011
1008
CI.getPreprocessor ());
1012
1009
1013
1010
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),
1017
1012
std::move (LinkModules), std::move (OS), *VMContext, CoverageInfo));
1018
1013
BEConsumer = Result.get ();
1019
1014
@@ -1182,11 +1177,8 @@ void CodeGenAction::ExecuteAction() {
1182
1177
1183
1178
// Set clang diagnostic handler. To do this we need to create a fake
1184
1179
// 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);
1190
1182
1191
1183
// Link in each pending link module.
1192
1184
if (!CodeGenOpts.LinkBitcodePostopt && Result.LinkInModules (&*TheModule))
0 commit comments