// 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);
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;
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.");
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) {
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,