[llvm-branch-commits] [llvm] 0276bc1 - [LVI] Add NewPM printer pass
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
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)
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)
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 printpass. --- 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