r363415 - Reland: [Remarks] Refactor optimization remarks setup
Francis Visoiu Mistrih via cfe-commits
cfe-commits at lists.llvm.org
Fri Jun 14 09:20:51 PDT 2019
Author: thegameg
Date: Fri Jun 14 09:20:51 2019
New Revision: 363415
URL: http://llvm.org/viewvc/llvm-project?rev=363415&view=rev
Log:
Reland: [Remarks] Refactor optimization remarks setup
* Add a common function to setup opt-remarks
* Rename common options to the same names
* Add error types to distinguish between file errors and regex errors
Modified:
cfe/trunk/lib/CodeGen/CodeGenAction.cpp
Modified: cfe/trunk/lib/CodeGen/CodeGenAction.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenAction.cpp?rev=363415&r1=363414&r2=363415&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CodeGenAction.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenAction.cpp Fri Jun 14 09:20:51 2019
@@ -262,35 +262,32 @@ namespace clang {
Ctx.getDiagnosticHandler();
Ctx.setDiagnosticHandler(llvm::make_unique<ClangDiagnosticHandler>(
CodeGenOpts, this));
- Ctx.setDiagnosticsHotnessRequested(CodeGenOpts.DiagnosticsWithHotness);
- if (CodeGenOpts.DiagnosticsHotnessThreshold != 0)
- Ctx.setDiagnosticsHotnessThreshold(
- CodeGenOpts.DiagnosticsHotnessThreshold);
- std::unique_ptr<llvm::ToolOutputFile> OptRecordFile;
- if (!CodeGenOpts.OptRecordFile.empty()) {
- std::error_code EC;
- OptRecordFile = llvm::make_unique<llvm::ToolOutputFile>(
- CodeGenOpts.OptRecordFile, EC, sys::fs::F_None);
- if (EC) {
- Diags.Report(diag::err_cannot_open_file) <<
- CodeGenOpts.OptRecordFile << EC.message();
- return;
- }
+ Expected<std::unique_ptr<llvm::ToolOutputFile>> OptRecordFileOrErr =
+ setupOptimizationRemarks(Ctx, CodeGenOpts.OptRecordFile,
+ CodeGenOpts.OptRecordPasses,
+ CodeGenOpts.DiagnosticsWithHotness,
+ CodeGenOpts.DiagnosticsHotnessThreshold);
- Ctx.setRemarkStreamer(llvm::make_unique<RemarkStreamer>(
- CodeGenOpts.OptRecordFile,
- llvm::make_unique<remarks::YAMLSerializer>(OptRecordFile->os())));
-
- if (!CodeGenOpts.OptRecordPasses.empty())
- if (Error E = Ctx.getRemarkStreamer()->setFilter(
- CodeGenOpts.OptRecordPasses))
- Diags.Report(diag::err_drv_optimization_remark_pattern)
- << toString(std::move(E)) << CodeGenOpts.OptRecordPasses;
-
- if (CodeGenOpts.getProfileUse() != CodeGenOptions::ProfileNone)
- Ctx.setDiagnosticsHotnessRequested(true);
+ if (Error E = OptRecordFileOrErr.takeError()) {
+ handleAllErrors(
+ std::move(E),
+ [&](const RemarkSetupFileError &E) {
+ Diags.Report(diag::err_cannot_open_file)
+ << CodeGenOpts.OptRecordFile << E.message();
+ },
+ [&](const RemarkSetupPatternError &E) {
+ Diags.Report(diag::err_drv_optimization_remark_pattern)
+ << E.message() << CodeGenOpts.OptRecordPasses;
+ });
+ return;
}
+ std::unique_ptr<llvm::ToolOutputFile> OptRecordFile =
+ std::move(*OptRecordFileOrErr);
+
+ if (OptRecordFile &&
+ CodeGenOpts.getProfileUse() != CodeGenOptions::ProfileNone)
+ Ctx.setDiagnosticsHotnessRequested(true);
// Link each LinkModule into our module.
if (LinkInModules())
More information about the cfe-commits
mailing list