diff options
author | Francis Visoiu Mistrih <francisvm@yahoo.com> | 2019-06-14 00:05:56 +0000 |
---|---|---|
committer | Francis Visoiu Mistrih <francisvm@yahoo.com> | 2019-06-14 00:05:56 +0000 |
commit | e4147ea1ef4d24e266f71a2700fa7478d2fdc6ba (patch) | |
tree | a3c3123cebc1d13386b8e2e9c621e0741c506b5a /llvm/lib/LTO | |
parent | 1e4882c8906f3a31031e47dd5010f4078a9c4702 (diff) | |
download | bcm5719-llvm-e4147ea1ef4d24e266f71a2700fa7478d2fdc6ba.tar.gz bcm5719-llvm-e4147ea1ef4d24e266f71a2700fa7478d2fdc6ba.zip |
Revert "[Remarks] Refactor optimization remarks setup"
This reverts commit 6e6e3af55bb97e1a4c97375c15a2b0099120c5a7.
This breaks greendragon.
llvm-svn: 363343
Diffstat (limited to 'llvm/lib/LTO')
-rw-r--r-- | llvm/lib/LTO/LTO.cpp | 36 | ||||
-rw-r--r-- | llvm/lib/LTO/LTOBackend.cpp | 3 | ||||
-rw-r--r-- | llvm/lib/LTO/LTOCodeGenerator.cpp | 27 | ||||
-rw-r--r-- | llvm/lib/LTO/ThinLTOCodeGenerator.cpp | 11 |
4 files changed, 43 insertions, 34 deletions
diff --git a/llvm/lib/LTO/LTO.cpp b/llvm/lib/LTO/LTO.cpp index fe1bdfcaa96..882b15525c1 100644 --- a/llvm/lib/LTO/LTO.cpp +++ b/llvm/lib/LTO/LTO.cpp @@ -1338,22 +1338,34 @@ Error LTO::runThinLTO(AddStreamFn AddStream, NativeObjectCache Cache, } Expected<std::unique_ptr<ToolOutputFile>> -lto::setupOptimizationRemarks(LLVMContext &Context, StringRef RemarksFilename, - StringRef RemarksPasses, bool RemarksWithHotness, - int Count) { - std::string Filename = RemarksFilename; - if (!Filename.empty() && Count != -1) +lto::setupOptimizationRemarks(LLVMContext &Context, + StringRef LTORemarksFilename, + StringRef LTORemarksPasses, + bool LTOPassRemarksWithHotness, int Count) { + if (LTOPassRemarksWithHotness) + Context.setDiagnosticsHotnessRequested(true); + if (LTORemarksFilename.empty()) + return nullptr; + + std::string Filename = LTORemarksFilename; + if (Count != -1) Filename += ".thin." + llvm::utostr(Count) + ".yaml"; - auto ResultOrErr = llvm::setupOptimizationRemarks( - Context, Filename, RemarksPasses, RemarksWithHotness); - if (Error E = ResultOrErr.takeError()) - return std::move(E); + std::error_code EC; + auto DiagnosticFile = + llvm::make_unique<ToolOutputFile>(Filename, EC, sys::fs::F_None); + if (EC) + return errorCodeToError(EC); + Context.setRemarkStreamer(llvm::make_unique<RemarkStreamer>( + Filename, + llvm::make_unique<remarks::YAMLSerializer>(DiagnosticFile->os()))); - if (*ResultOrErr) - (*ResultOrErr)->keep(); + if (!LTORemarksPasses.empty()) + if (Error E = Context.getRemarkStreamer()->setFilter(LTORemarksPasses)) + return std::move(E); - return ResultOrErr; + DiagnosticFile->keep(); + return std::move(DiagnosticFile); } Expected<std::unique_ptr<ToolOutputFile>> diff --git a/llvm/lib/LTO/LTOBackend.cpp b/llvm/lib/LTO/LTOBackend.cpp index 317d0163674..9c2d0ed5d54 100644 --- a/llvm/lib/LTO/LTOBackend.cpp +++ b/llvm/lib/LTO/LTOBackend.cpp @@ -22,7 +22,6 @@ #include "llvm/Bitcode/BitcodeWriter.h" #include "llvm/IR/LegacyPassManager.h" #include "llvm/IR/PassManager.h" -#include "llvm/IR/RemarkStreamer.h" #include "llvm/IR/Verifier.h" #include "llvm/LTO/LTO.h" #include "llvm/MC/SubtargetFeature.h" @@ -33,9 +32,9 @@ #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/Path.h" #include "llvm/Support/Program.h" +#include "llvm/Support/raw_ostream.h" #include "llvm/Support/TargetRegistry.h" #include "llvm/Support/ThreadPool.h" -#include "llvm/Support/raw_ostream.h" #include "llvm/Target/TargetMachine.h" #include "llvm/Transforms/IPO.h" #include "llvm/Transforms/IPO/PassManagerBuilder.h" diff --git a/llvm/lib/LTO/LTOCodeGenerator.cpp b/llvm/lib/LTO/LTOCodeGenerator.cpp index ebc4cc5794a..f6d955d59c6 100644 --- a/llvm/lib/LTO/LTOCodeGenerator.cpp +++ b/llvm/lib/LTO/LTOCodeGenerator.cpp @@ -33,7 +33,6 @@ #include "llvm/IR/Mangler.h" #include "llvm/IR/Module.h" #include "llvm/IR/PassTimingInfo.h" -#include "llvm/IR/RemarkStreamer.h" #include "llvm/IR/Verifier.h" #include "llvm/InitializePasses.h" #include "llvm/LTO/LTO.h" @@ -81,21 +80,21 @@ cl::opt<bool> LTODiscardValueNames( #endif cl::Hidden); -cl::opt<bool> RemarksWithHotness( - "lto-pass-remarks-with-hotness", - cl::desc("With PGO, include profile count in optimization remarks"), - cl::Hidden); - cl::opt<std::string> - RemarksFilename("lto-pass-remarks-output", - cl::desc("Output filename for pass remarks"), - cl::value_desc("filename")); + LTORemarksFilename("lto-pass-remarks-output", + cl::desc("Output filename for pass remarks"), + cl::value_desc("filename")); cl::opt<std::string> - RemarksPasses("lto-pass-remarks-filter", - cl::desc("Only record optimization remarks from passes whose " - "names match the given regular expression"), - cl::value_desc("regex")); + LTORemarksPasses("lto-pass-remarks-filter", + cl::desc("Only record optimization remarks from passes " + "whose names match the given regular expression"), + cl::value_desc("regex")); + +cl::opt<bool> LTOPassRemarksWithHotness( + "lto-pass-remarks-with-hotness", + cl::desc("With PGO, include profile count in optimization remarks"), + cl::Hidden); cl::opt<std::string> LTOStatsFile( "lto-stats-file", @@ -518,7 +517,7 @@ bool LTOCodeGenerator::optimize(bool DisableVerify, bool DisableInline, return false; auto DiagFileOrErr = lto::setupOptimizationRemarks( - Context, RemarksFilename, RemarksPasses, RemarksWithHotness); + Context, LTORemarksFilename, LTORemarksPasses, LTOPassRemarksWithHotness); if (!DiagFileOrErr) { errs() << "Error: " << toString(DiagFileOrErr.takeError()) << "\n"; report_fatal_error("Can't get an output file for the remarks"); diff --git a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp index 5d9aa8e571b..df18dd3f9ca 100644 --- a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp +++ b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp @@ -29,7 +29,6 @@ #include "llvm/IR/LegacyPassManager.h" #include "llvm/IR/Mangler.h" #include "llvm/IR/PassTimingInfo.h" -#include "llvm/IR/RemarkStreamer.h" #include "llvm/IR/Verifier.h" #include "llvm/IRReader/IRReader.h" #include "llvm/LTO/LTO.h" @@ -70,9 +69,9 @@ using namespace llvm; namespace llvm { // Flags -discard-value-names, defined in LTOCodeGenerator.cpp extern cl::opt<bool> LTODiscardValueNames; -extern cl::opt<std::string> RemarksFilename; -extern cl::opt<std::string> RemarksPasses; -extern cl::opt<bool> RemarksWithHotness; +extern cl::opt<std::string> LTORemarksFilename; +extern cl::opt<std::string> LTORemarksPasses; +extern cl::opt<bool> LTOPassRemarksWithHotness; } namespace { @@ -1020,8 +1019,8 @@ void ThinLTOCodeGenerator::run() { Context.setDiscardValueNames(LTODiscardValueNames); Context.enableDebugTypeODRUniquing(); auto DiagFileOrErr = lto::setupOptimizationRemarks( - Context, RemarksFilename, RemarksPasses, - RemarksWithHotness, count); + Context, LTORemarksFilename, LTORemarksPasses, + LTOPassRemarksWithHotness, count); if (!DiagFileOrErr) { errs() << "Error: " << toString(DiagFileOrErr.takeError()) << "\n"; report_fatal_error("ThinLTO: Can't get an output file for the " |