[LTO] Share the optimization remarks setup between Thin/Full LTO.
llvm-svn: 294807
This commit is contained in:
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user