Skip to content

[HashRecognize] Introduce dump methods for debug #142748

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 4, 2025

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
rorth pushed a commit to rorth/llvm-project that referenced this pull request Jun 11, 2025
Introduce dump methods to aid interactive debugging with GDB/LLDB. While
at it, also fix the header comment in HashRecognize.cpp.
DhruvSrivastavaX pushed a commit to DhruvSrivastavaX/lldb-for-aix that referenced this pull request Jun 12, 2025
Introduce dump methods to aid interactive debugging with GDB/LLDB. While
at it, also fix the header comment in HashRecognize.cpp.
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