Skip to content

Commit 5fdcea2

Browse files
committed
[clang] Simplify BackendConsumer. NFC
1 parent f6c76d5 commit 5fdcea2

File tree

2 files changed

+38
-54
lines changed

2 files changed

+38
-54
lines changed

clang/lib/CodeGen/BackendConsumer.h

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,16 @@ class BackendConsumer : public ASTConsumer {
2929

3030
virtual void anchor();
3131
DiagnosticsEngine &Diags;
32-
BackendAction Action;
3332
const HeaderSearchOptions &HeaderSearchOpts;
3433
const CodeGenOptions &CodeGenOpts;
3534
const TargetOptions &TargetOpts;
3635
const LangOptions &LangOpts;
3736
std::unique_ptr<raw_pwrite_stream> AsmOutStream;
38-
ASTContext *Context;
37+
ASTContext *Context = nullptr;
3938
IntrusiveRefCntPtr<llvm::vfs::FileSystem> FS;
4039

4140
llvm::Timer LLVMIRGeneration;
42-
unsigned LLVMIRGenerationRefCount;
41+
unsigned LLVMIRGenerationRefCount = 0;
4342

4443
/// True if we've finished generating IR. This prevents us from generating
4544
/// additional LLVM IR after emitting output in HandleTranslationUnit. This
@@ -48,6 +47,8 @@ class BackendConsumer : public ASTConsumer {
4847

4948
bool TimerIsEnabled = false;
5049

50+
BackendAction Action;
51+
5152
std::unique_ptr<CodeGenerator> Gen;
5253

5354
SmallVector<LinkModule, 4> LinkModules;
@@ -69,12 +70,8 @@ class BackendConsumer : public ASTConsumer {
6970
llvm::Module *CurLinkModule = nullptr;
7071

7172
public:
72-
BackendConsumer(BackendAction Action, DiagnosticsEngine &Diags,
73+
BackendConsumer(const CompilerInstance &CI, BackendAction Action,
7374
IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS,
74-
const HeaderSearchOptions &HeaderSearchOpts,
75-
const PreprocessorOptions &PPOpts,
76-
const CodeGenOptions &CodeGenOpts,
77-
const TargetOptions &TargetOpts, const LangOptions &LangOpts,
7875
const std::string &InFile,
7976
SmallVector<LinkModule, 4> LinkModules,
8077
std::unique_ptr<raw_pwrite_stream> OS, llvm::LLVMContext &C,
@@ -83,15 +80,10 @@ class BackendConsumer : public ASTConsumer {
8380
// This constructor is used in installing an empty BackendConsumer
8481
// to use the clang diagnostic handler for IR input files. It avoids
8582
// initializing the OS field.
86-
BackendConsumer(BackendAction Action, DiagnosticsEngine &Diags,
83+
BackendConsumer(const CompilerInstance &CI, BackendAction Action,
8784
IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS,
88-
const HeaderSearchOptions &HeaderSearchOpts,
89-
const PreprocessorOptions &PPOpts,
90-
const CodeGenOptions &CodeGenOpts,
91-
const TargetOptions &TargetOpts, const LangOptions &LangOpts,
9285
llvm::Module *Module, SmallVector<LinkModule, 4> LinkModules,
93-
llvm::LLVMContext &C,
94-
CoverageSourceInfo *CoverageInfo = nullptr);
86+
llvm::LLVMContext &C);
9587

9688
llvm::Module *getModule() const;
9789
std::unique_ptr<llvm::Module> takeModule();

clang/lib/CodeGen/CodeGenAction.cpp

Lines changed: 31 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)