[MLIR][Presburger] Move IntegerPolyhedron::reset to FlatAffineConstraints::reset
authorGroverkss <groverkss@gmail.com>
Sun, 27 Feb 2022 16:57:15 +0000 (22:27 +0530)
committerGroverkss <groverkss@gmail.com>
Sun, 27 Feb 2022 16:57:28 +0000 (22:27 +0530)
This patch moves IntegerPolyhedron::reset to FlatAffineConstraints::reset. This
function is not required in IntegerPolyhedron and creates ambiguity while
shifting implementations to IntegerRelation.

This patch is part of a series of patches to introduce relations in Presburger
library.

Reviewed By: arjunp

Differential Revision: https://reviews.llvm.org/D120628

mlir/include/mlir/Analysis/Presburger/IntegerPolyhedron.h
mlir/include/mlir/Dialect/Affine/Analysis/AffineStructures.h
mlir/lib/Analysis/Presburger/IntegerPolyhedron.cpp
mlir/lib/Dialect/Affine/Analysis/AffineStructures.cpp

index 5f0ae76..b4cf2b0 100644 (file)
@@ -144,16 +144,6 @@ public:
   // Clones this object.
   std::unique_ptr<IntegerPolyhedron> clone() const;
 
-  /// Clears any existing data and reserves memory for the specified
-  /// constraints.
-  virtual void reset(unsigned numReservedInequalities,
-                     unsigned numReservedEqualities, unsigned numReservedCols,
-                     unsigned numDims, unsigned numSymbols,
-                     unsigned numLocals = 0);
-
-  void reset(unsigned numDims = 0, unsigned numSymbols = 0,
-             unsigned numLocals = 0);
-
   /// Appends constraints from `other` into `this`. This is equivalent to an
   /// intersection with no simplification of any sort attempted.
   void append(const IntegerPolyhedron &other);
index 67e565b..9640674 100644 (file)
@@ -102,6 +102,15 @@ public:
     return cst->getKind() == Kind::FlatAffineConstraints;
   }
 
+  /// Clears any existing data and reserves memory for the specified
+  /// constraints.
+  virtual void reset(unsigned numReservedInequalities,
+                     unsigned numReservedEqualities, unsigned numReservedCols,
+                     unsigned numDims, unsigned numSymbols,
+                     unsigned numLocals = 0);
+  void reset(unsigned numDims = 0, unsigned numSymbols = 0,
+             unsigned numLocals = 0);
+
   // Clones this object.
   std::unique_ptr<FlatAffineConstraints> clone() const;
 
index ce24af0..453b2c1 100644 (file)
@@ -31,23 +31,6 @@ std::unique_ptr<IntegerPolyhedron> IntegerPolyhedron::clone() const {
   return std::make_unique<IntegerPolyhedron>(*this);
 }
 
-void IntegerPolyhedron::reset(unsigned numReservedInequalities,
-                              unsigned numReservedEqualities,
-                              unsigned newNumReservedCols, unsigned newNumDims,
-                              unsigned newNumSymbols, unsigned newNumLocals) {
-  assert(newNumReservedCols >= newNumDims + newNumSymbols + newNumLocals + 1 &&
-         "minimum 1 column");
-  *this = IntegerPolyhedron(numReservedInequalities, numReservedEqualities,
-                            newNumReservedCols, newNumDims, newNumSymbols,
-                            newNumLocals);
-}
-
-void IntegerPolyhedron::reset(unsigned newNumDims, unsigned newNumSymbols,
-                              unsigned newNumLocals) {
-  reset(0, 0, newNumDims + newNumSymbols + newNumLocals + 1, newNumDims,
-        newNumSymbols, newNumLocals);
-}
-
 void IntegerPolyhedron::append(const IntegerPolyhedron &other) {
   assert(PresburgerLocalSpace::isEqual(other) && "Spaces must be equal.");
 
@@ -1796,7 +1779,8 @@ static BoundCmpResult compareBounds(ArrayRef<int64_t> a, ArrayRef<int64_t> b) {
 static void getCommonConstraints(const IntegerPolyhedron &a,
                                  const IntegerPolyhedron &b,
                                  IntegerPolyhedron &c) {
-  c.reset(a.getNumDimIds(), a.getNumSymbolIds(), a.getNumLocalIds());
+  c = IntegerPolyhedron(a.getNumDimIds(), a.getNumSymbolIds(),
+                        a.getNumLocalIds());
   // a naive O(n^2) check should be enough here given the input sizes.
   for (unsigned r = 0, e = a.getNumInequalities(); r < e; ++r) {
     for (unsigned s = 0, f = b.getNumInequalities(); s < f; ++s) {
index c3cbbd8..30f95dd 100644 (file)
@@ -233,6 +233,25 @@ FlatAffineValueConstraints::getHyperrectangular(ValueRange ivs, ValueRange lbs,
   return res;
 }
 
+void FlatAffineConstraints::reset(unsigned numReservedInequalities,
+                                  unsigned numReservedEqualities,
+                                  unsigned newNumReservedCols,
+                                  unsigned newNumDims, unsigned newNumSymbols,
+                                  unsigned newNumLocals) {
+  assert(newNumReservedCols >= newNumDims + newNumSymbols + newNumLocals + 1 &&
+         "minimum 1 column");
+  *this = FlatAffineConstraints(numReservedInequalities, numReservedEqualities,
+                                newNumReservedCols, newNumDims, newNumSymbols,
+                                newNumLocals);
+}
+
+void FlatAffineConstraints::reset(unsigned newNumDims, unsigned newNumSymbols,
+                                  unsigned newNumLocals) {
+  reset(/*numReservedInequalities=*/0, /*numReservedEqualities=*/0,
+        /*numReservedCols=*/newNumDims + newNumSymbols + newNumLocals + 1,
+        newNumDims, newNumSymbols, newNumLocals);
+}
+
 void FlatAffineValueConstraints::reset(unsigned numReservedInequalities,
                                        unsigned numReservedEqualities,
                                        unsigned newNumReservedCols,