[llvm] r294792 - [lib/LTO] Rework optimization remarkers setup.
Davide Italiano via llvm-commits
llvm-commits at lists.llvm.org
Fri Feb 10 14:16:18 PST 2017
Author: davide
Date: Fri Feb 10 16:16:17 2017
New Revision: 294792
URL: http://llvm.org/viewvc/llvm-project?rev=294792&view=rev
Log:
[lib/LTO] Rework optimization remarkers setup.
This makes this code much more similar to what ThinLTO is
using (also API wise), so now we can probably use a single
code path instead of copying stuff around.
Modified:
llvm/trunk/include/llvm/LTO/legacy/LTOCodeGenerator.h
llvm/trunk/lib/LTO/LTOCodeGenerator.cpp
Modified: llvm/trunk/include/llvm/LTO/legacy/LTOCodeGenerator.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/LTO/legacy/LTOCodeGenerator.h?rev=294792&r1=294791&r2=294792&view=diff
==============================================================================
--- llvm/trunk/include/llvm/LTO/legacy/LTOCodeGenerator.h (original)
+++ llvm/trunk/include/llvm/LTO/legacy/LTOCodeGenerator.h Fri Feb 10 16:16:17 2017
@@ -41,6 +41,7 @@
#include "llvm/ADT/StringSet.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/Module.h"
+#include "llvm/Support/Error.h"
#include "llvm/Support/ToolOutputFile.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetOptions.h"
@@ -206,7 +207,7 @@ private:
void emitError(const std::string &ErrMsg);
void emitWarning(const std::string &ErrMsg);
- bool setupOptimizationRemarks();
+ Expected<std::unique_ptr<tool_output_file>> setupOptimizationRemarks();
void finishOptimizationRemarks();
LLVMContext &Context;
Modified: llvm/trunk/lib/LTO/LTOCodeGenerator.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/LTO/LTOCodeGenerator.cpp?rev=294792&r1=294791&r2=294792&view=diff
==============================================================================
--- llvm/trunk/lib/LTO/LTOCodeGenerator.cpp (original)
+++ llvm/trunk/lib/LTO/LTOCodeGenerator.cpp Fri Feb 10 16:16:17 2017
@@ -506,23 +506,22 @@ void LTOCodeGenerator::verifyMergedModul
report_fatal_error("Broken module found, compilation aborted!");
}
-bool LTOCodeGenerator::setupOptimizationRemarks() {
- if (LTORemarksFilename != "") {
- std::error_code EC;
- DiagnosticOutputFile = llvm::make_unique<tool_output_file>(
- LTORemarksFilename, EC, sys::fs::F_None);
- if (EC) {
- emitError(EC.message());
- return false;
- }
- Context.setDiagnosticsOutputFile(
- llvm::make_unique<yaml::Output>(DiagnosticOutputFile->os()));
- }
+Expected<std::unique_ptr<tool_output_file>>
+LTOCodeGenerator::setupOptimizationRemarks() {
+ if (LTORemarksFilename.empty())
+ return nullptr;
+
+ std::error_code EC;
+ auto DiagnosticFile = llvm::make_unique<tool_output_file>(
+ LTORemarksFilename, EC, sys::fs::F_None);
+ if (EC)
+ return errorCodeToError(EC);
+ Context.setDiagnosticsOutputFile(
+ llvm::make_unique<yaml::Output>(DiagnosticFile->os()));
if (LTOPassRemarksWithHotness)
Context.setDiagnosticHotnessRequested(true);
-
- return true;
+ return std::move(DiagnosticFile);
}
void LTOCodeGenerator::finishOptimizationRemarks() {
@@ -540,8 +539,12 @@ bool LTOCodeGenerator::optimize(bool Dis
if (!this->determineTarget())
return false;
- if (!setupOptimizationRemarks())
- return false;
+ auto DiagFileOrErr = setupOptimizationRemarks();
+ if (!DiagFileOrErr) {
+ errs() << "Error: " << toString(DiagFileOrErr.takeError()) << "\n";
+ report_fatal_error("Can't get an output file for the remarks");
+ }
+ DiagnosticOutputFile = std::move(*DiagFileOrErr);
// We always run the verifier once on the merged module, the `DisableVerify`
// parameter only applies to subsequent verify.
More information about the llvm-commits
mailing list