mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-27 21:50:40 +00:00
[lib/LTO] Initial support for optimization remarks in the new API.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294882 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f92e231ad4
commit
9c7400c731
@ -68,6 +68,12 @@ struct Config {
|
||||
/// Sample PGO profile path.
|
||||
std::string SampleProfile;
|
||||
|
||||
/// Optimization remarks file path.
|
||||
std::string RemarksFilename = "";
|
||||
|
||||
/// Whether to emit optimization remarks with hotness informations.
|
||||
bool RemarksWithHotness = false;
|
||||
|
||||
bool ShouldDiscardValueNames = true;
|
||||
DiagnosticHandlerFunction DiagHandler;
|
||||
|
||||
|
@ -366,6 +366,12 @@ Error lto::backend(Config &C, AddStreamFn AddStream,
|
||||
|
||||
handleAsmUndefinedRefs(*Mod, *TM);
|
||||
|
||||
// Setup optimization remarks.
|
||||
auto DiagFileOrErr = lto::setupOptimizationRemarks(
|
||||
Mod->getContext(), C.RemarksFilename, C.RemarksWithHotness);
|
||||
if (!DiagFileOrErr)
|
||||
return DiagFileOrErr.takeError();
|
||||
|
||||
if (!C.CodeGenOnly)
|
||||
if (!opt(C, TM.get(), 0, *Mod, /*IsThinLTO=*/false, CombinedIndex))
|
||||
return Error::success();
|
||||
|
33
test/LTO/Resolution/X86/diagnostic-handler-remarks.ll
Normal file
33
test/LTO/Resolution/X86/diagnostic-handler-remarks.ll
Normal file
@ -0,0 +1,33 @@
|
||||
; RUN: llvm-as < %s >%t.bc
|
||||
|
||||
; RUN: rm -f %t.yaml
|
||||
; RUN: llvm-lto2 -pass-remarks-output=%t.yaml \
|
||||
; RUN: -r %t.bc,tinkywinky,p \
|
||||
; RUN: -r %t.bc,patatino,px \
|
||||
; RUN: -r %t.bc,main,px -o %t.o %t.bc 2>&1
|
||||
; RUN: cat %t.yaml | FileCheck %s -check-prefix=YAML
|
||||
|
||||
; YAML: --- !Passed
|
||||
; YAML-NEXT: Pass: inline
|
||||
; YAML-NEXT: Name: Inlined
|
||||
; YAML-NEXT: Function: main
|
||||
; YAML-NEXT: Args:
|
||||
; YAML-NEXT: - Callee: tinkywinky
|
||||
; YAML-NEXT: - String: ' inlined into '
|
||||
; YAML-NEXT: - Caller: main
|
||||
; YAML-NEXT: ...
|
||||
|
||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-scei-ps4"
|
||||
|
||||
declare i32 @patatino()
|
||||
|
||||
define i32 @tinkywinky() {
|
||||
%a = call i32 @patatino()
|
||||
ret i32 %a
|
||||
}
|
||||
|
||||
define i32 @main() {
|
||||
%i = call i32 @tinkywinky()
|
||||
ret i32 %i
|
||||
}
|
@ -90,6 +90,10 @@ static cl::opt<std::string> DefaultTriple(
|
||||
cl::desc(
|
||||
"Replace unspecified target triples in input files with this triple"));
|
||||
|
||||
static cl::opt<std::string>
|
||||
OptRemarksOutput("pass-remarks-output",
|
||||
cl::desc("YAML output file for optimization remarks"));
|
||||
|
||||
static void check(Error E, std::string Msg) {
|
||||
if (!E)
|
||||
return;
|
||||
@ -176,6 +180,9 @@ int main(int argc, char **argv) {
|
||||
check(Conf.addSaveTemps(OutputFilename + "."),
|
||||
"Config::addSaveTemps failed");
|
||||
|
||||
// Optimization remarks.
|
||||
Conf.RemarksFilename = OptRemarksOutput;
|
||||
|
||||
// Run a custom pipeline, if asked for.
|
||||
Conf.OptPipeline = OptPipeline;
|
||||
Conf.AAPipeline = AAPipeline;
|
||||
|
Loading…
Reference in New Issue
Block a user