mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:40:38 +00:00
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:
parent
0e7b0fcc48
commit
6f58d8aefa
@ -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;
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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");
|
||||||
|
@ -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 "
|
||||||
|
@ -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"
|
||||||
|
|
||||||
|
@ -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"
|
||||||
|
Loading…
Reference in New Issue
Block a user