[PATCH] D81024: InlineCostAnnotationPrinterPass - print constants to which instructions are simplified

Kirill Naumov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 2 12:05:19 PDT 2020


knaumov created this revision.
knaumov added reviewers: apilipenko, mtrofin, davidxl, fedor.sergeev.
Herald added subscribers: llvm-commits, haicheng, hiraditya, eraman.
Herald added a project: LLVM.
knaumov added a parent revision: D81016: Adding InlineCostAnnotationPrinterPass for Inline Cost Analysis.

Adding functionality to InlineCostAnnotationPrinterPass to print the constant (if any) to which each instruction will be simplified. This feature helps for debugging purposes to track the constant folding thread in InlineCost Analysis.


https://reviews.llvm.org/D81024

Files:
  llvm/lib/Analysis/InlineCost.cpp
  llvm/test/Transforms/Inline/simplified_to.ll


Index: llvm/test/Transforms/Inline/simplified_to.ll
===================================================================
--- /dev/null
+++ llvm/test/Transforms/Inline/simplified_to.ll
@@ -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
+}
Index: llvm/lib/Analysis/InlineCost.cpp
===================================================================
--- llvm/lib/Analysis/InlineCost.cpp
+++ llvm/lib/Analysis/InlineCost.cpp
@@ -392,6 +392,12 @@
 
   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;
@@ -755,6 +761,11 @@
     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";
 }
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D81024.267945.patch
Type: text/x-patch
Size: 1464 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200602/98018166/attachment.bin>


More information about the llvm-commits mailing list