[LTO] Share the optimization remarks setup between Thin/Full LTO.

llvm-svn: 294807
This commit is contained in:
Davide Italiano
2017-02-10 23:49:38 +00:00
parent c18de74165
commit 690ed9dec7
5 changed files with 35 additions and 42 deletions

View File

@@ -35,6 +35,7 @@
#include "llvm/IR/Module.h"
#include "llvm/IR/Verifier.h"
#include "llvm/InitializePasses.h"
#include "llvm/LTO/LTO.h"
#include "llvm/LTO/legacy/LTOModule.h"
#include "llvm/LTO/legacy/UpdateCompilerUsed.h"
#include "llvm/Linker/Linker.h"
@@ -506,24 +507,6 @@ void LTOCodeGenerator::verifyMergedModuleOnce() {
report_fatal_error("Broken module found, compilation aborted!");
}
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 std::move(DiagnosticFile);
}
void LTOCodeGenerator::finishOptimizationRemarks() {
if (DiagnosticOutputFile) {
DiagnosticOutputFile->keep();
@@ -539,7 +522,8 @@ bool LTOCodeGenerator::optimize(bool DisableVerify, bool DisableInline,
if (!this->determineTarget())
return false;
auto DiagFileOrErr = setupOptimizationRemarks();
auto DiagFileOrErr = lto::setupOptimizationRemarks(
Context, LTORemarksFilename, LTOPassRemarksWithHotness);
if (!DiagFileOrErr) {
errs() << "Error: " << toString(DiagFileOrErr.takeError()) << "\n";
report_fatal_error("Can't get an output file for the remarks");