1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00

[InlineCost] PrinterPass prints constants to which instructions are simplified

This patch enables printing of constants to see which instructions were
constant-folded. Needed for tests and better visiual analysis of
inliner's work.

Reviewers: apilipenko, mtrofin, davidxl, fedor.sergeev

Reviewed By: mtrofin

Differential Revision: https://reviews.llvm.org/D81024
This commit is contained in:
Kirill Naumov 2020-06-02 18:57:30 +00:00
parent dc9522e0eb
commit d123d281c8
2 changed files with 27 additions and 1 deletions

View File

@ -402,6 +402,12 @@ public:
InlineResult analyze();
Optional<Constant*> getSimplifiedValue(Instruction *I) {
if (SimplifiedValues.find(I) != SimplifiedValues.end())
return SimplifiedValues[I];
return None;
}
// Keep a bunch of stats about the cost savings found so we can print them
// out when debugging.
unsigned NumConstantArgs = 0;
@ -766,6 +772,11 @@ void InlineCostAnnotationWriter::emitInstructionAnnot(const Instruction *I,
if (Record->hasThresholdChanged())
OS << ", threshold delta = " << Record->getThresholdDelta();
}
auto C = ICCA->getSimplifiedValue(const_cast<Instruction *>(I));
if (C) {
OS << ", simplified to ";
C.getValue()->print(OS, true);
}
OS << "\n";
}
@ -2545,4 +2556,4 @@ InlineCostAnnotationPrinterPass::run(Function &F,
}
}
return PreservedAnalyses::all();
}
}

View File

@ -0,0 +1,15 @@
; RUN: opt < %s -passes="print<inline-cost>" 2>&1 | FileCheck %s
; CHECK-LABEL: @test()
; CHECK: cost before = {{.*}}, cost after = {{.*}}, threshold before = {{.*}}, threshold after = {{.*}}, cost delta = {{.*}}, simplified to i1 false
; CHECK: %1 = icmp eq i32 4, 5
define i32 @test() {
%1 = icmp eq i32 4, 5
ret i32 0
}
define void @main() {
%1 = call i32 @test()
ret void
}