@@ -105,44 +105,20 @@ static void reportOptRecordError(Error E, DiagnosticsEngine &Diags,
105
105
});
106
106
}
107
107
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)
116
114
: Diags(CI.getDiagnostics()), HeaderSearchOpts(CI.getHeaderSearchOpts()),
117
115
CodeGenOpts (CI.getCodeGenOpts()), TargetOpts(CI.getTargetOpts()),
118
116
LangOpts(CI.getLangOpts()), AsmOutStream(std::move(OS)), FS(VFS),
119
117
LLVMIRGeneration(" irgen" , " LLVM IR Generation Time" ), Action(Action),
120
118
Gen(CreateLLVMCodeGen(Diags, InFile, std::move(VFS),
121
119
CI.getHeaderSearchOpts(), CI.getPreprocessorOpts(),
122
120
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) {
146
122
TimerIsEnabled = CodeGenOpts.TimePasses ;
147
123
llvm::TimePassesIsEnabled = CodeGenOpts.TimePasses ;
148
124
llvm::TimePassesPerRun = CodeGenOpts.TimePassesPerRun ;
@@ -1008,8 +984,8 @@ CodeGenAction::CreateASTConsumer(CompilerInstance &CI, StringRef InFile) {
1008
984
CI.getPreprocessor ());
1009
985
1010
986
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));
1013
989
BEConsumer = Result.get ();
1014
990
1015
991
// Enable generating macro debug info only when debug info is not disabled and
@@ -1177,8 +1153,9 @@ void CodeGenAction::ExecuteAction() {
1177
1153
1178
1154
// Set clang diagnostic handler. To do this we need to create a fake
1179
1155
// 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 ());
1182
1159
1183
1160
// Link in each pending link module.
1184
1161
if (!CodeGenOpts.LinkBitcodePostopt && Result.LinkInModules (&*TheModule))
0 commit comments