[llvm] 2a2a6bf - Recommit "[ConstraintElimination] Change debug output to display variable names."

Zain Jaffal via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 15 07:25:21 PST 2023


Author: Zain Jaffal
Date: 2023-02-15T15:23:53Z
New Revision: 2a2a6bfcfe8e62886542cb673ac8df349cf26499

URL: https://github.com/llvm/llvm-project/commit/2a2a6bfcfe8e62886542cb673ac8df349cf26499
DIFF: https://github.com/llvm/llvm-project/commit/2a2a6bfcfe8e62886542cb673ac8df349cf26499.diff

LOG: Recommit "[ConstraintElimination] Change debug output to display variable names."

This reverts commit 62d0e1a8541f93dfbf66d982f66da32676df2df7.

remove `dumpWithNames` function

Added: 
    

Modified: 
    llvm/include/llvm/Analysis/ConstraintSystem.h
    llvm/lib/Analysis/ConstraintSystem.cpp
    llvm/lib/Transforms/Scalar/ConstraintElimination.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/Analysis/ConstraintSystem.h b/llvm/include/llvm/Analysis/ConstraintSystem.h
index e348b38f152ab..14eab748d965a 100644
--- a/llvm/include/llvm/Analysis/ConstraintSystem.h
+++ b/llvm/include/llvm/Analysis/ConstraintSystem.h
@@ -36,13 +36,17 @@ class ConstraintSystem {
   // Eliminate constraints from the system using Fourier–Motzkin elimination.
   bool eliminateUsingFM();
 
-  /// Print the constraints in the system, using x0...xn as variable names.
-  void dump() const;
-
   /// Returns true if there may be a solution for the constraints in the system.
   bool mayHaveSolutionImpl();
 
+  /// Get list of variable names from the Value2Index map.
+  SmallVector<std::string> getVarNamesList() const;
+
 public:
+  ConstraintSystem() {}
+  ConstraintSystem(const DenseMap<Value *, unsigned> &Value2Index)
+      : Value2Index(Value2Index) {}
+
   bool addVariableRow(ArrayRef<int64_t> R) {
     assert(Constraints.empty() || R.size() == Constraints.back().size());
     // If all variable coefficients are 0, the constraint does not provide any
@@ -103,8 +107,8 @@ class ConstraintSystem {
   /// Returns the number of rows in the constraint system.
   unsigned size() const { return Constraints.size(); }
 
-  /// Print the constraints in the system, using \p Names as variable names.
-  void dump(ArrayRef<std::string> Names) const;
+  /// Print the constraints in the system.
+  void dump() const;
 };
 } // namespace llvm
 

diff  --git a/llvm/lib/Analysis/ConstraintSystem.cpp b/llvm/lib/Analysis/ConstraintSystem.cpp
index fd96c61e9a94c..6e9be8745ebb3 100644
--- a/llvm/lib/Analysis/ConstraintSystem.cpp
+++ b/llvm/lib/Analysis/ConstraintSystem.cpp
@@ -111,10 +111,23 @@ bool ConstraintSystem::mayHaveSolutionImpl() {
   return all_of(Constraints, [](auto &R) { return R[0] >= 0; });
 }
 
-void ConstraintSystem::dump(ArrayRef<std::string> Names) const {
+SmallVector<std::string> ConstraintSystem::getVarNamesList() const {
+  SmallVector<std::string> Names(Value2Index.size(), "");
+  for (auto &[V, Index] : Value2Index) {
+    std::string OperandName;
+    if (V->getName().empty())
+      OperandName = V->getNameOrAsOperand();
+    else
+      OperandName = std::string("%") + V->getName().str();
+    Names[Index - 1] = OperandName;
+  }
+  return Names;
+}
+
+void ConstraintSystem::dump() const {
   if (Constraints.empty())
     return;
-
+  SmallVector<std::string> Names = getVarNamesList();
   for (const auto &Row : Constraints) {
     SmallVector<std::string, 16> Parts;
     for (unsigned I = 1, S = Row.size(); I < S; ++I) {
@@ -131,14 +144,6 @@ void ConstraintSystem::dump(ArrayRef<std::string> Names) const {
   }
 }
 
-void ConstraintSystem::dump() const {
-  SmallVector<std::string, 16> Names;
-  for (unsigned i = 1; i < Constraints.back().size(); ++i)
-    Names.push_back("x" + std::to_string(i));
-  LLVM_DEBUG(dbgs() << "---\n");
-  dump(Names);
-}
-
 bool ConstraintSystem::mayHaveSolution() {
   LLVM_DEBUG(dump());
   bool HasSolution = mayHaveSolutionImpl();

diff  --git a/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp b/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
index 4ec3a58f52584..e5ec35545ca33 100644
--- a/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+++ b/llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
@@ -644,20 +644,12 @@ struct State {
 } // namespace
 
 #ifndef NDEBUG
-static void dumpWithNames(const ConstraintSystem &CS,
-                          DenseMap<Value *, unsigned> &Value2Index) {
-  SmallVector<std::string> Names(Value2Index.size(), "");
-  for (auto &KV : Value2Index) {
-    Names[KV.second - 1] = std::string("%") + KV.first->getName().str();
-  }
-  CS.dump(Names);
-}
 
-static void dumpWithNames(ArrayRef<int64_t> C,
-                          DenseMap<Value *, unsigned> &Value2Index) {
-  ConstraintSystem CS;
+static void dumpConstraint(ArrayRef<int64_t> C,
+                           const DenseMap<Value *, unsigned> &Value2Index) {
+  ConstraintSystem CS(Value2Index);
   CS.addVariableRowFill(C);
-  dumpWithNames(CS, Value2Index);
+  CS.dump();
 }
 #endif
 
@@ -941,7 +933,7 @@ static bool checkAndReplaceCondition(
 
     LLVM_DEBUG({
       dbgs() << "Condition " << *Cmp << " implied by dominating constraints\n";
-      dumpWithNames(CSToUse, Info.getValue2Index(R.IsSigned));
+      CSToUse.dump();
     });
     generateReproducer(Cmp, ReproducerModule, ReproducerCondStack, Info, DT);
     Constant *TrueC =
@@ -961,7 +953,7 @@ static bool checkAndReplaceCondition(
 
     LLVM_DEBUG({
       dbgs() << "Condition !" << *Cmp << " implied by dominating constraints\n";
-      dumpWithNames(CSToUse, Info.getValue2Index(R.IsSigned));
+      CSToUse.dump(); 
     });
     generateReproducer(Cmp, ReproducerModule, ReproducerCondStack, Info, DT);
     Constant *FalseC =
@@ -1005,7 +997,7 @@ void ConstraintInfo::addFact(CmpInst::Predicate Pred, Value *A, Value *B,
 
     LLVM_DEBUG({
       dbgs() << "  constraint: ";
-      dumpWithNames(R.Coefficients, getValue2Index(R.IsSigned));
+      dumpConstraint(R.Coefficients, getValue2Index(R.IsSigned));
       dbgs() << "\n";
     });
 
@@ -1150,8 +1142,8 @@ static bool eliminateConstraints(Function &F, DominatorTree &DT,
         break;
       LLVM_DEBUG({
         dbgs() << "Removing ";
-        dumpWithNames(Info.getCS(E.IsSigned).getLastConstraint(),
-                      Info.getValue2Index(E.IsSigned));
+        dumpConstraint(Info.getCS(E.IsSigned).getLastConstraint(),
+                       Info.getValue2Index(E.IsSigned));
         dbgs() << "\n";
       });
 


        


More information about the llvm-commits mailing list