[MLIR][Presburger] Move IntegerPolyhedron::reset to FlatAffineConstraints::reset

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
This commit is contained in:
Groverkss 2022-02-27 22:27:15 +05:30
parent 69684b84c6
commit b486a9de80
4 changed files with 30 additions and 28 deletions

View 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);

View 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;

View 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) {

View 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,