Skip to content

Commit 6dd1315

Browse files
committed
[clang] Simplify BackendConsumer after #69371
1 parent b30f9d7 commit 6dd1315

File tree

2 files changed

+16
-47
lines changed

2 files changed

+16
-47
lines changed

clang/lib/CodeGen/BackendConsumer.h

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -72,18 +72,10 @@ class BackendConsumer : public ASTConsumer {
7272
public:
7373
BackendConsumer(const CompilerInstance &CI, BackendAction Action,
7474
IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS,
75-
const std::string &InFile,
76-
SmallVector<LinkModule, 4> LinkModules,
77-
std::unique_ptr<raw_pwrite_stream> OS, llvm::LLVMContext &C,
78-
CoverageSourceInfo *CoverageInfo = nullptr);
79-
80-
// This constructor is used in installing an empty BackendConsumer
81-
// to use the clang diagnostic handler for IR input files. It avoids
82-
// initializing the OS field.
83-
BackendConsumer(const CompilerInstance &CI, BackendAction Action,
84-
IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS,
85-
llvm::Module *Module, SmallVector<LinkModule, 4> LinkModules,
86-
llvm::LLVMContext &C);
75+
llvm::LLVMContext &C, SmallVector<LinkModule, 4> LinkModules,
76+
StringRef InFile, std::unique_ptr<raw_pwrite_stream> OS,
77+
CoverageSourceInfo *CoverageInfo,
78+
llvm::Module *CurLinkModule = nullptr);
8779

8880
llvm::Module *getModule() const;
8981
std::unique_ptr<llvm::Module> takeModule();

clang/lib/CodeGen/CodeGenAction.cpp

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

Comments
 (0)