Skip to content

Conversation

@artagnon
Copy link
Contributor

@artagnon artagnon commented Jun 4, 2025

Introduce dump methods to aid interactive debugging with GDB/LLDB. While at it, also fix the header comment in HashRecognize.cpp.

Introduce dump methods to aid interactive debugging with GDB/LLDB. While
at it, also fix the header comment in HashRecognize.cpp.
@artagnon artagnon requested review from nikic and pfusik June 4, 2025 09:14
@llvmbot llvmbot added the llvm:analysis Includes value tracking, cost tables and constant folding label Jun 4, 2025
@llvmbot
Copy link
Member

llvmbot commented Jun 4, 2025

@llvm/pr-subscribers-llvm-analysis

Author: Ramkumar Ramachandra (artagnon)

Changes

Introduce dump methods to aid interactive debugging with GDB/LLDB. While at it, also fix the header comment in HashRecognize.cpp.


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

2 Files Affected:

  • (modified) llvm/include/llvm/Analysis/HashRecognize.h (+10-2)
  • (modified) llvm/lib/Analysis/HashRecognize.cpp (+14-2)
diff --git a/llvm/include/llvm/Analysis/HashRecognize.h b/llvm/include/llvm/Analysis/HashRecognize.h
index 7a31ab681bed5..86051f0580719 100644
--- a/llvm/include/llvm/Analysis/HashRecognize.h
+++ b/llvm/include/llvm/Analysis/HashRecognize.h
@@ -34,7 +34,11 @@ using ErrBits = std::tuple<KnownBits, unsigned, bool>;
 
 /// A custom std::array with 256 entries, that also has a print function.
 struct CRCTable : public std::array<APInt, 256> {
-  void print(raw_ostream &OS) const;
+  LLVM_DUMP_METHOD void print(raw_ostream &OS) const;
+
+#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
+  LLVM_DUMP_METHOD void dump() const;
+#endif
 };
 
 /// The structure that is returned when a polynomial algorithm was recognized by
@@ -87,7 +91,11 @@ class HashRecognize {
   // and return a 256-entry CRC table.
   CRCTable genSarwateTable(const APInt &GenPoly, bool ByteOrderSwapped) const;
 
-  void print(raw_ostream &OS) const;
+  LLVM_DUMP_METHOD void print(raw_ostream &OS) const;
+
+#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
+  LLVM_DUMP_METHOD void dump() const;
+#endif
 };
 
 class HashRecognizePrinterPass
diff --git a/llvm/lib/Analysis/HashRecognize.cpp b/llvm/lib/Analysis/HashRecognize.cpp
index c6e9f2b64f876..22e88eacd6ff8 100644
--- a/llvm/lib/Analysis/HashRecognize.cpp
+++ b/llvm/lib/Analysis/HashRecognize.cpp
@@ -1,4 +1,4 @@
-//===- HashRecognize.h ------------------------------------------*- C++ -*-===//
+//===- HashRecognize.cpp ----------------------------------------*- C++ -*-===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -274,7 +274,7 @@ struct RecurrenceInfo {
   RecurrenceInfo(const Loop &L) : L(L) {}
   operator bool() const { return BO; }
 
-  void print(raw_ostream &OS, unsigned Indent) const {
+  LLVM_DUMP_METHOD void print(raw_ostream &OS, unsigned Indent = 0) const {
     OS.indent(Indent) << "Phi: ";
     Phi->print(OS);
     OS << "\n";
@@ -294,6 +294,10 @@ struct RecurrenceInfo {
     }
   }
 
+#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
+  LLVM_DUMP_METHOD void dump() const { print(dbgs()); }
+#endif
+
   bool matchSimpleRecurrence(const PHINode *P);
   bool matchConditionalRecurrence(
       const PHINode *P,
@@ -628,6 +632,10 @@ void CRCTable::print(raw_ostream &OS) const {
   }
 }
 
+#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
+void CRCTable::dump() const { print(dbgs()); }
+#endif
+
 void HashRecognize::print(raw_ostream &OS) const {
   if (!L.isInnermost())
     return;
@@ -671,6 +679,10 @@ void HashRecognize::print(raw_ostream &OS) const {
   genSarwateTable(Info.RHS, Info.ByteOrderSwapped).print(OS);
 }
 
+#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
+void HashRecognize::dump() const { print(dbgs()); }
+#endif
+
 HashRecognize::HashRecognize(const Loop &L, ScalarEvolution &SE)
     : L(L), SE(SE) {}
 

Copy link
Contributor

@pfusik pfusik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@artagnon artagnon merged commit 0a25b50 into llvm:main Jun 4, 2025
11 checks passed
@artagnon artagnon deleted the hashrecognize-dump branch June 4, 2025 15:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

llvm:analysis Includes value tracking, cost tables and constant folding

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants