[llvm-branch-commits] [llvm] 0276bc1 - [LVI] Add NewPM printer pass

2023-11-25 Thread Aiden Grossman via llvm-branch-commits

Author: Aiden Grossman
Date: 2023-11-25T21:20:29-08:00
New Revision: 0276bc121c06eebe3a031d72a971d84a20c7f1b5

URL: 
https://github.com/llvm/llvm-project/commit/0276bc121c06eebe3a031d72a971d84a20c7f1b5
DIFF: 
https://github.com/llvm/llvm-project/commit/0276bc121c06eebe3a031d72a971d84a20c7f1b5.diff

LOG: [LVI] Add NewPM printer pass

This patch adds a NewPM printer pass for the LazyValueAnalysis.

Added: 
llvm/test/Analysis/LazyValueAnalysis/print.ll

Modified: 
llvm/include/llvm/Analysis/LazyValueInfo.h
llvm/lib/Analysis/LazyValueInfo.cpp
llvm/lib/Passes/PassRegistry.def

Removed: 




diff  --git a/llvm/include/llvm/Analysis/LazyValueInfo.h 
b/llvm/include/llvm/Analysis/LazyValueInfo.h
index f013a4a75d3d6ad..ead9f5f0225cd09 100644
--- a/llvm/include/llvm/Analysis/LazyValueInfo.h
+++ b/llvm/include/llvm/Analysis/LazyValueInfo.h
@@ -151,6 +151,17 @@ class LazyValueAnalysis : public 
AnalysisInfoMixin {
   friend struct AnalysisInfoMixin;
 };
 
+/// Printer pass for the LazyValueAnalysis results.
+class LazyValueInfoPrinterPass
+: public PassInfoMixin {
+  raw_ostream &OS;
+
+public:
+  explicit LazyValueInfoPrinterPass(raw_ostream &OS) : OS(OS) {}
+
+  PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
+};
+
 /// Wrapper around LazyValueInfo.
 class LazyValueInfoWrapperPass : public FunctionPass {
   LazyValueInfoWrapperPass(const LazyValueInfoWrapperPass&) = delete;

diff  --git a/llvm/lib/Analysis/LazyValueInfo.cpp 
b/llvm/lib/Analysis/LazyValueInfo.cpp
index 5cb207c8036d40a..868824285301a09 100644
--- a/llvm/lib/Analysis/LazyValueInfo.cpp
+++ b/llvm/lib/Analysis/LazyValueInfo.cpp
@@ -2087,6 +2087,15 @@ void LazyValueInfoAnnotatedWriter::emitInstructionAnnot(
 
 }
 
+PreservedAnalyses LazyValueInfoPrinterPass::run(Function &F,
+FunctionAnalysisManager &AM) {
+  OS << "LVI for function '" << F.getName() << "':\n";
+  auto &LVI = AM.getResult(F);
+  auto &DTree = AM.getResult(F);
+  LVI.printLVI(F, DTree, OS);
+  return PreservedAnalyses::all();
+}
+
 namespace {
 // Printer class for LazyValueInfo results.
 class LazyValueInfoPrinter : public FunctionPass {

diff  --git a/llvm/lib/Passes/PassRegistry.def 
b/llvm/lib/Passes/PassRegistry.def
index 2067fc473b522db..199a8e4622e35a3 100644
--- a/llvm/lib/Passes/PassRegistry.def
+++ b/llvm/lib/Passes/PassRegistry.def
@@ -400,6 +400,7 @@ FUNCTION_PASS("print", 
FunctionPropertiesPrinterPass(dbgs()))
 FUNCTION_PASS("print", InlineCostAnnotationPrinterPass(dbgs()))
 FUNCTION_PASS("print",
   InlineSizeEstimatorAnalysisPrinterPass(dbgs()))
+FUNCTION_PASS("print", LazyValueInfoPrinterPass(dbgs()))
 FUNCTION_PASS("print", LoopPrinterPass(dbgs()))
 FUNCTION_PASS("print", MemorySSAWalkerPrinterPass(dbgs()))
 FUNCTION_PASS("print", PhiValuesPrinterPass(dbgs()))

diff  --git a/llvm/test/Analysis/LazyValueAnalysis/print.ll 
b/llvm/test/Analysis/LazyValueAnalysis/print.ll
new file mode 100644
index 000..6b4938a5fd9e07b
--- /dev/null
+++ b/llvm/test/Analysis/LazyValueAnalysis/print.ll
@@ -0,0 +1,49 @@
+; RUN: opt %s -disable-output -passes="jump-threading,print" 
2>&1 | FileCheck %s
+
+; first to populate the values.
+
+define i32 @constraint(i32 %a) {
+; CHECK-LABEL: LVI for function 'constraint':
+chklt64:
+; CHECK-LABEL: chklt64:
+; CHECK-NEXT: ; LatticeVal for: 'i32 %a' is: overdefined
+; CHECK-NEXT: ; LatticeVal for: '  %cmp = icmp slt i32 %a, 64' in BB: 
'%chklt64' is: overdefined
+; CHECK-NEXT: ; LatticeVal for: '  %cmp = icmp slt i32 %a, 64' in BB: 
'%chkgt0' is: constantrange<-1, 0>
+; CHECK-NEXT: ; LatticeVal for: '  %cmp = icmp slt i32 %a, 64' in BB: 
'%notinbounds' is: overdefined
+; CHECK-NEXT:   %cmp = icmp slt i32 %a, 64
+; CHECK-NEXT: ; LatticeVal for: '  br i1 %cmp, label %chkgt0, label 
%notinbounds' in BB: '%chklt64' is: overdefined
+; CHECK-NEXT: ; LatticeVal for: '  br i1 %cmp, label %chkgt0, label 
%notinbounds' in BB: '%chkgt0' is: overdefined
+; CHECK-NEXT: ; LatticeVal for: '  br i1 %cmp, label %chkgt0, label 
%notinbounds' in BB: '%notinbounds' is: overdefined
+; CHECK-NEXT:   br i1 %cmp, label %chkgt0, label %notinbounds
+  %cmp = icmp slt i32 %a, 64
+  br i1 %cmp, label %chkgt0, label %notinbounds
+
+chkgt0:
+; CHECK-LABEL: chkgt0:
+; CHECK-NEXT: ; LatticeVal for: 'i32 %a' is: constantrange<-2147483648, 64>
+; CHECK-NEXT: ; LatticeVal for: '  %cmp1 = icmp sgt i32 %a, 0' in BB: 
'%chkgt0' is: overdefined
+; CHECK-NEXT: ; LatticeVal for: '  %cmp1 = icmp sgt i32 %a, 0' in BB: 
'%inbounds' is: constantrange<-1, 0>
+; CHECK-NEXT:   %cmp1 = icmp sgt i32 %a, 0
+; CHECK-NEXT: ; LatticeVal for: '  br i1 %cmp1, label %inbounds, label 
%notinbounds' in BB: '%chkgt0' is: overdefined
+; CHECK-NEXT: ; LatticeVal for: '  br i1 %cmp1, label %inbounds, label 
%notinbounds' in BB: '%inbounds' is: overdefined
+; CHECK-NEXT:   br i1 %cmp1, label %inbounds, label %notinbounds
+  %cmp1 = icmp 

[llvm-branch-commits] [llvm] 7317f70 - [JumpThreading] Remove LVI printer flag

2023-11-25 Thread Aiden Grossman via llvm-branch-commits

Author: Aiden Grossman
Date: 2023-11-25T21:29:11-08:00
New Revision: 7317f7018ce98afa2e58c7c8af166a849b4a1674

URL: 
https://github.com/llvm/llvm-project/commit/7317f7018ce98afa2e58c7c8af166a849b4a1674
DIFF: 
https://github.com/llvm/llvm-project/commit/7317f7018ce98afa2e58c7c8af166a849b4a1674.diff

LOG: [JumpThreading] Remove LVI printer flag

This patch removes the -print-lvi-after-jump-threading flag now that we
can print everything in the LVI cache using the print
pass.

Added: 


Modified: 
llvm/lib/Transforms/Scalar/JumpThreading.cpp
llvm/test/Analysis/LazyValueAnalysis/lvi-after-jumpthreading.ll

Removed: 




diff  --git a/llvm/lib/Transforms/Scalar/JumpThreading.cpp 
b/llvm/lib/Transforms/Scalar/JumpThreading.cpp
index d7d503427ec3d20..57a80854ee2b52b 100644
--- a/llvm/lib/Transforms/Scalar/JumpThreading.cpp
+++ b/llvm/lib/Transforms/Scalar/JumpThreading.cpp
@@ -102,11 +102,6 @@ static cl::opt PhiDuplicateThreshold(
 cl::desc("Max PHIs in BB to duplicate for jump threading"), cl::init(76),
 cl::Hidden);
 
-static cl::opt PrintLVIAfterJumpThreading(
-"print-lvi-after-jump-threading",
-cl::desc("Print the LazyValueInfo cache after JumpThreading"), 
cl::init(false),
-cl::Hidden);
-
 static cl::opt ThreadAcrossLoopHeaders(
 "jump-threading-across-loop-headers",
 cl::desc("Allow JumpThreading to thread across loop headers, for testing"),
@@ -257,11 +252,6 @@ PreservedAnalyses JumpThreadingPass::run(Function &F,
   &DT, nullptr, DomTreeUpdater::UpdateStrategy::Lazy),
   std::nullopt, std::nullopt);
 
-  if (PrintLVIAfterJumpThreading) {
-dbgs() << "LVI for function '" << F.getName() << "':\n";
-LVI.printLVI(F, getDomTreeUpdater()->getDomTree(), dbgs());
-  }
-
   if (!Changed)
 return PreservedAnalyses::all();
 

diff  --git a/llvm/test/Analysis/LazyValueAnalysis/lvi-after-jumpthreading.ll 
b/llvm/test/Analysis/LazyValueAnalysis/lvi-after-jumpthreading.ll
index 418b575a186bb8f..847882febdbb0a5 100644
--- a/llvm/test/Analysis/LazyValueAnalysis/lvi-after-jumpthreading.ll
+++ b/llvm/test/Analysis/LazyValueAnalysis/lvi-after-jumpthreading.ll
@@ -1,5 +1,4 @@
-; RUN: opt < %s -passes=jump-threading -print-lvi-after-jump-threading 
-disable-output 2>&1 | FileCheck %s
-; RUN: opt < %s -passes=jump-threading -print-lvi-after-jump-threading 
-disable-output 2>&1 | FileCheck %s
+; RUN: opt < %s -passes="jump-threading,print" 
-disable-output 2>&1 | FileCheck %s
 
 ; Testing LVI cache after jump-threading
 



___
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits


[llvm-branch-commits] [llvm] [JumpThreading] Remove LVI printer flag (PR #73426)

2023-11-25 Thread Aiden Grossman via llvm-branch-commits

https://github.com/boomanaiden154 created 
https://github.com/llvm/llvm-project/pull/73426

This patch removes the -print-lvi-after-jump-threading flag now that we can 
print everything in the LVI cache using the print pass.

>From 7317f7018ce98afa2e58c7c8af166a849b4a1674 Mon Sep 17 00:00:00 2001
From: Aiden Grossman 
Date: Sat, 25 Nov 2023 21:29:11 -0800
Subject: [PATCH] [JumpThreading] Remove LVI printer flag

This patch removes the -print-lvi-after-jump-threading flag now that we
can print everything in the LVI cache using the print
pass.
---
 llvm/lib/Transforms/Scalar/JumpThreading.cpp   | 10 --
 .../LazyValueAnalysis/lvi-after-jumpthreading.ll   |  3 +--
 2 files changed, 1 insertion(+), 12 deletions(-)

diff --git a/llvm/lib/Transforms/Scalar/JumpThreading.cpp 
b/llvm/lib/Transforms/Scalar/JumpThreading.cpp
index d7d503427ec3d20..57a80854ee2b52b 100644
--- a/llvm/lib/Transforms/Scalar/JumpThreading.cpp
+++ b/llvm/lib/Transforms/Scalar/JumpThreading.cpp
@@ -102,11 +102,6 @@ static cl::opt PhiDuplicateThreshold(
 cl::desc("Max PHIs in BB to duplicate for jump threading"), cl::init(76),
 cl::Hidden);
 
-static cl::opt PrintLVIAfterJumpThreading(
-"print-lvi-after-jump-threading",
-cl::desc("Print the LazyValueInfo cache after JumpThreading"), 
cl::init(false),
-cl::Hidden);
-
 static cl::opt ThreadAcrossLoopHeaders(
 "jump-threading-across-loop-headers",
 cl::desc("Allow JumpThreading to thread across loop headers, for testing"),
@@ -257,11 +252,6 @@ PreservedAnalyses JumpThreadingPass::run(Function &F,
   &DT, nullptr, DomTreeUpdater::UpdateStrategy::Lazy),
   std::nullopt, std::nullopt);
 
-  if (PrintLVIAfterJumpThreading) {
-dbgs() << "LVI for function '" << F.getName() << "':\n";
-LVI.printLVI(F, getDomTreeUpdater()->getDomTree(), dbgs());
-  }
-
   if (!Changed)
 return PreservedAnalyses::all();
 
diff --git a/llvm/test/Analysis/LazyValueAnalysis/lvi-after-jumpthreading.ll 
b/llvm/test/Analysis/LazyValueAnalysis/lvi-after-jumpthreading.ll
index 418b575a186bb8f..847882febdbb0a5 100644
--- a/llvm/test/Analysis/LazyValueAnalysis/lvi-after-jumpthreading.ll
+++ b/llvm/test/Analysis/LazyValueAnalysis/lvi-after-jumpthreading.ll
@@ -1,5 +1,4 @@
-; RUN: opt < %s -passes=jump-threading -print-lvi-after-jump-threading 
-disable-output 2>&1 | FileCheck %s
-; RUN: opt < %s -passes=jump-threading -print-lvi-after-jump-threading 
-disable-output 2>&1 | FileCheck %s
+; RUN: opt < %s -passes="jump-threading,print" 
-disable-output 2>&1 | FileCheck %s
 
 ; Testing LVI cache after jump-threading
 

___
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits


[llvm-branch-commits] [llvm] [JumpThreading] Remove LVI printer flag (PR #73426)

2023-11-25 Thread via llvm-branch-commits

llvmbot wrote:




@llvm/pr-subscribers-llvm-analysis

Author: Aiden Grossman (boomanaiden154)


Changes

This patch removes the -print-lvi-after-jump-threading flag now that we can 
print everything in the LVI cache using the print pass.

---
Full diff: https://github.com/llvm/llvm-project/pull/73426.diff


2 Files Affected:

- (modified) llvm/lib/Transforms/Scalar/JumpThreading.cpp (-10) 
- (modified) llvm/test/Analysis/LazyValueAnalysis/lvi-after-jumpthreading.ll 
(+1-2) 


``diff
diff --git a/llvm/lib/Transforms/Scalar/JumpThreading.cpp 
b/llvm/lib/Transforms/Scalar/JumpThreading.cpp
index d7d503427ec3d20..57a80854ee2b52b 100644
--- a/llvm/lib/Transforms/Scalar/JumpThreading.cpp
+++ b/llvm/lib/Transforms/Scalar/JumpThreading.cpp
@@ -102,11 +102,6 @@ static cl::opt PhiDuplicateThreshold(
 cl::desc("Max PHIs in BB to duplicate for jump threading"), cl::init(76),
 cl::Hidden);
 
-static cl::opt PrintLVIAfterJumpThreading(
-"print-lvi-after-jump-threading",
-cl::desc("Print the LazyValueInfo cache after JumpThreading"), 
cl::init(false),
-cl::Hidden);
-
 static cl::opt ThreadAcrossLoopHeaders(
 "jump-threading-across-loop-headers",
 cl::desc("Allow JumpThreading to thread across loop headers, for testing"),
@@ -257,11 +252,6 @@ PreservedAnalyses JumpThreadingPass::run(Function &F,
   &DT, nullptr, DomTreeUpdater::UpdateStrategy::Lazy),
   std::nullopt, std::nullopt);
 
-  if (PrintLVIAfterJumpThreading) {
-dbgs() << "LVI for function '" << F.getName() << "':\n";
-LVI.printLVI(F, getDomTreeUpdater()->getDomTree(), dbgs());
-  }
-
   if (!Changed)
 return PreservedAnalyses::all();
 
diff --git a/llvm/test/Analysis/LazyValueAnalysis/lvi-after-jumpthreading.ll 
b/llvm/test/Analysis/LazyValueAnalysis/lvi-after-jumpthreading.ll
index 418b575a186bb8f..847882febdbb0a5 100644
--- a/llvm/test/Analysis/LazyValueAnalysis/lvi-after-jumpthreading.ll
+++ b/llvm/test/Analysis/LazyValueAnalysis/lvi-after-jumpthreading.ll
@@ -1,5 +1,4 @@
-; RUN: opt < %s -passes=jump-threading -print-lvi-after-jump-threading 
-disable-output 2>&1 | FileCheck %s
-; RUN: opt < %s -passes=jump-threading -print-lvi-after-jump-threading 
-disable-output 2>&1 | FileCheck %s
+; RUN: opt < %s -passes="jump-threading,print" 
-disable-output 2>&1 | FileCheck %s
 
 ; Testing LVI cache after jump-threading
 

``




https://github.com/llvm/llvm-project/pull/73426
___
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits