Revert "[LTO] Support filtering by hotness threshold"

This reverts commit 1f3bd185c53beb6aa68446974b7e80837abd6ef0 (r326107)
because it fails
ThinLTO/X86/diagnostic-handler-remarks-with-hotness.ll.

llvm-svn: 326975
This commit is contained in:
Bob Haarman 2018-03-08 01:13:10 +00:00
parent 0e7b0fcc48
commit 6f58d8aefa
8 changed files with 11 additions and 65 deletions

View File

@ -79,10 +79,6 @@ struct Config {
/// Whether to emit optimization remarks with hotness informations. /// Whether to emit optimization remarks with hotness informations.
bool RemarksWithHotness = false; bool RemarksWithHotness = false;
/// The minimum hotness value a diagnostic needs in order to be included in
/// optimization diagnostics.
unsigned RemarksHotnessThreshold = 0;
/// Whether to emit the pass manager debuggging informations. /// Whether to emit the pass manager debuggging informations.
bool DebugPassManager = false; bool DebugPassManager = false;

View File

@ -73,9 +73,7 @@ std::string getThinLTOOutputFile(const std::string &Path,
/// Setup optimization remarks. /// Setup optimization remarks.
Expected<std::unique_ptr<ToolOutputFile>> Expected<std::unique_ptr<ToolOutputFile>>
setupOptimizationRemarks(LLVMContext &Context, StringRef LTORemarksFilename, setupOptimizationRemarks(LLVMContext &Context, StringRef LTORemarksFilename,
bool LTOPassRemarksWithHotness, bool LTOPassRemarksWithHotness, int Count = -1);
unsigned LTOPassRemarksHotnessThreshold,
int Count = -1);
class LTO; class LTO;
struct SymbolResolution; struct SymbolResolution;

View File

@ -1202,10 +1202,10 @@ Error LTO::runThinLTO(AddStreamFn AddStream, NativeObjectCache Cache) {
return BackendProc->wait(); return BackendProc->wait();
} }
Expected<std::unique_ptr<ToolOutputFile>> lto::setupOptimizationRemarks( Expected<std::unique_ptr<ToolOutputFile>>
LLVMContext &Context, StringRef LTORemarksFilename, lto::setupOptimizationRemarks(LLVMContext &Context,
bool LTOPassRemarksWithHotness, unsigned LTOPassRemarksHotnessThreshold, StringRef LTORemarksFilename,
int Count) { bool LTOPassRemarksWithHotness, int Count) {
if (LTORemarksFilename.empty()) if (LTORemarksFilename.empty())
return nullptr; return nullptr;
@ -1222,8 +1222,6 @@ Expected<std::unique_ptr<ToolOutputFile>> lto::setupOptimizationRemarks(
llvm::make_unique<yaml::Output>(DiagnosticFile->os())); llvm::make_unique<yaml::Output>(DiagnosticFile->os()));
if (LTOPassRemarksWithHotness) if (LTOPassRemarksWithHotness)
Context.setDiagnosticsHotnessRequested(true); Context.setDiagnosticsHotnessRequested(true);
if (LTOPassRemarksHotnessThreshold)
Context.setDiagnosticsHotnessThreshold(LTOPassRemarksHotnessThreshold);
DiagnosticFile->keep(); DiagnosticFile->keep();
return std::move(DiagnosticFile); return std::move(DiagnosticFile);
} }

View File

@ -376,8 +376,7 @@ Error lto::backend(Config &C, AddStreamFn AddStream,
// Setup optimization remarks. // Setup optimization remarks.
auto DiagFileOrErr = lto::setupOptimizationRemarks( auto DiagFileOrErr = lto::setupOptimizationRemarks(
Mod->getContext(), C.RemarksFilename, C.RemarksWithHotness, Mod->getContext(), C.RemarksFilename, C.RemarksWithHotness);
C.RemarksHotnessThreshold);
if (!DiagFileOrErr) if (!DiagFileOrErr)
return DiagFileOrErr.takeError(); return DiagFileOrErr.takeError();
auto DiagnosticOutputFile = std::move(*DiagFileOrErr); auto DiagnosticOutputFile = std::move(*DiagFileOrErr);

View File

@ -89,12 +89,6 @@ cl::opt<bool> LTOPassRemarksWithHotness(
"lto-pass-remarks-with-hotness", "lto-pass-remarks-with-hotness",
cl::desc("With PGO, include profile count in optimization remarks"), cl::desc("With PGO, include profile count in optimization remarks"),
cl::Hidden); cl::Hidden);
cl::opt<unsigned> LTOPassRemarksHotnessThreshold(
"lto-pass-remarks-hotness-threshold",
cl::desc("Minimum profile count required for an optimization remark to be "
"output"),
cl::Hidden);
} }
LTOCodeGenerator::LTOCodeGenerator(LLVMContext &Context) LTOCodeGenerator::LTOCodeGenerator(LLVMContext &Context)
@ -511,8 +505,7 @@ bool LTOCodeGenerator::optimize(bool DisableVerify, bool DisableInline,
return false; return false;
auto DiagFileOrErr = lto::setupOptimizationRemarks( auto DiagFileOrErr = lto::setupOptimizationRemarks(
Context, LTORemarksFilename, LTOPassRemarksWithHotness, Context, LTORemarksFilename, LTOPassRemarksWithHotness);
LTOPassRemarksHotnessThreshold);
if (!DiagFileOrErr) { if (!DiagFileOrErr) {
errs() << "Error: " << toString(DiagFileOrErr.takeError()) << "\n"; errs() << "Error: " << toString(DiagFileOrErr.takeError()) << "\n";
report_fatal_error("Can't get an output file for the remarks"); report_fatal_error("Can't get an output file for the remarks");

View File

@ -63,7 +63,6 @@ namespace llvm {
extern cl::opt<bool> LTODiscardValueNames; extern cl::opt<bool> LTODiscardValueNames;
extern cl::opt<std::string> LTORemarksFilename; extern cl::opt<std::string> LTORemarksFilename;
extern cl::opt<bool> LTOPassRemarksWithHotness; extern cl::opt<bool> LTOPassRemarksWithHotness;
extern cl::opt<unsigned> LTOPassRemarksHotnessThreshold;
} }
namespace { namespace {
@ -999,8 +998,7 @@ void ThinLTOCodeGenerator::run() {
Context.setDiscardValueNames(LTODiscardValueNames); Context.setDiscardValueNames(LTODiscardValueNames);
Context.enableDebugTypeODRUniquing(); Context.enableDebugTypeODRUniquing();
auto DiagFileOrErr = lto::setupOptimizationRemarks( auto DiagFileOrErr = lto::setupOptimizationRemarks(
Context, LTORemarksFilename, LTOPassRemarksWithHotness, Context, LTORemarksFilename, LTOPassRemarksWithHotness, count);
LTOPassRemarksHotnessThreshold, count);
if (!DiagFileOrErr) { if (!DiagFileOrErr) {
errs() << "Error: " << toString(DiagFileOrErr.takeError()) << "\n"; errs() << "Error: " << toString(DiagFileOrErr.takeError()) << "\n";
report_fatal_error("ThinLTO: Can't get an output file for the " report_fatal_error("ThinLTO: Can't get an output file for the "

View File

@ -8,18 +8,6 @@
; RUN: -exported-symbol _main -o %t.o %t.bc ; RUN: -exported-symbol _main -o %t.o %t.bc
; RUN: cat %t.yaml | FileCheck -check-prefix=YAML %s ; RUN: cat %t.yaml | FileCheck -check-prefix=YAML %s
; RUN: llvm-lto -lto-pass-remarks-output=%t.yaml \
; RUN: -lto-pass-remarks-with-hotness \
; RUN: -lto-pass-remarks-hotness-threshold=400 \
; RUN: -exported-symbol _main -o %t.o %t.bc
; RUN: cat %t.yaml | FileCheck -allow-empty -check-prefix=YAML_TH_HIGH %s
; RUN: llvm-lto -lto-pass-remarks-output=%t.yaml \
; RUN: -lto-pass-remarks-with-hotness \
; RUN: -lto-pass-remarks-hotness-threshold=200 \
; RUN: -exported-symbol _main -o %t.o %t.bc
; RUN: cat %t.yaml | FileCheck -allow-empty -check-prefix=YAML %s
; YAML: --- !Passed ; YAML: --- !Passed
; YAML-NEXT: Pass: inline ; YAML-NEXT: Pass: inline
; YAML-NEXT: Name: Inlined ; YAML-NEXT: Name: Inlined
@ -36,9 +24,6 @@
; YAML-NEXT: - String: ')' ; YAML-NEXT: - String: ')'
; YAML-NEXT: ... ; YAML-NEXT: ...
; YAML_TH_HIGH-NOT: Name: Inlined
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-darwin" target triple = "x86_64-apple-darwin"

View File

@ -5,7 +5,7 @@
; with -lto-pass-remarks-with-hotness. ; with -lto-pass-remarks-with-hotness.
; RUN: llvm-lto -thinlto-action=run \ ; RUN: llvm-lto -thinlto-action=run \
; RUN: -lto-pass-remarks-output=%t-no-th.yaml \ ; RUN: -lto-pass-remarks-output=%t.yaml \
; RUN: -lto-pass-remarks-with-hotness \ ; RUN: -lto-pass-remarks-with-hotness \
; RUN: -exported-symbol _func2 \ ; RUN: -exported-symbol _func2 \
; RUN: -exported-symbol _main %t1.bc %t2.bc 2>&1 | \ ; RUN: -exported-symbol _main %t1.bc %t2.bc 2>&1 | \
@ -13,25 +13,9 @@
; CHECK-NOT: remark: ; CHECK-NOT: remark:
; CHECK-NOT: llvm-lto: ; CHECK-NOT: llvm-lto:
; RUN: llvm-lto -thinlto-action=run \
; RUN: -lto-pass-remarks-output=%t-low-th.yaml \
; RUN: -lto-pass-remarks-with-hotness \
; RUN: -lto-pass-remarks-hotness-threshold=20 \
; RUN: -exported-symbol _func2 \
; RUN: -exported-symbol _main %t1.bc %t2.bc 2>&1 | \
; RUN: llvm-lto -thinlto-action=run \
; RUN: -lto-pass-remarks-output=%t-high-th.yaml \
; RUN: -lto-pass-remarks-with-hotness \
; RUN: -lto-pass-remarks-hotness-threshold=100 \
; RUN: -exported-symbol _func2 \
; RUN: -exported-symbol _main %t1.bc %t2.bc 2>&1 | \
; Verify that bar is imported and inlined into foo ; Verify that bar is imported and inlined into foo
; RUN: cat %t-no-th.yaml.thin.0.yaml | FileCheck %s -check-prefix=YAML1 ; RUN: cat %t.yaml.thin.0.yaml | FileCheck %s -check-prefix=YAML1
; RUN: cat %t-low-th.yaml.thin.0.yaml | FileCheck %s -check-prefix=YAML1
; RUN: cat %t-high-th.yaml.thin.0.yaml | FileCheck %s -allow-empty -check-prefix=YAML1_TH_HIGH
; YAML1: --- !Passed ; YAML1: --- !Passed
; YAML1-NEXT: Pass: inline ; YAML1-NEXT: Pass: inline
; YAML1-NEXT: Name: Inlined ; YAML1-NEXT: Name: Inlined
@ -48,13 +32,9 @@
; YAML1-NEXT: - String: ')' ; YAML1-NEXT: - String: ')'
; YAML1-NEXT: ... ; YAML1-NEXT: ...
; YAML1_TH_HIGH-NOT: Name: Inlined
; Verify that bar is imported and inlined into foo ; Verify that bar is imported and inlined into foo
; RUN: cat %t-no-th.yaml.thin.1.yaml | FileCheck %s -check-prefix=YAML2 ; RUN: cat %t.yaml.thin.1.yaml | FileCheck %s -check-prefix=YAML2
; RUN: cat %t-low-th.yaml.thin.1.yaml | FileCheck %s -allow-empty -check-prefix=YAML2_TH_HIGH
; RUN: cat %t-high-th.yaml.thin.1.yaml | FileCheck %s -allow-empty -check-prefix=YAML2_TH_HIGH
; YAML2: --- !Passed ; YAML2: --- !Passed
; YAML2-NEXT: Pass: inline ; YAML2-NEXT: Pass: inline
; YAML2-NEXT: Name: Inlined ; YAML2-NEXT: Name: Inlined
@ -70,7 +50,6 @@
; YAML2-NEXT: - String: ')' ; YAML2-NEXT: - String: ')'
; YAML2-NEXT: ... ; YAML2-NEXT: ...
; YAML2_TH_HIGH-NOT: Name: Inlined
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.11.0" target triple = "x86_64-apple-macosx10.11.0"