/// Base type for affine expression.
/// AffineExpr's are immutable value types with intuitive operators to
/// operate on chainable, lightweight compositions.
-/// An AffineExpr is a POD interface to the underlying storage type pointer.
+/// An AffineExpr is an interface to the underlying storage type pointer.
class AffineExpr {
public:
using ImplType = detail::AffineExprStorage;
return *this;
}
- static AffineExpr Null() { return AffineExpr(nullptr); }
-
bool operator==(AffineExpr other) const { return expr == other.expr; }
bool operator!=(AffineExpr other) const { return !(*this == other); }
explicit operator bool() const { return expr; }
LLVM_DEBUG(dump());
// Record computed/detected identifiers.
- SmallVector<AffineExpr, 8> memo(getNumIds(), AffineExpr::Null());
+ SmallVector<AffineExpr, 8> memo(getNumIds());
// Initialize dimensional and symbolic identifiers.
for (unsigned i = num, e = getNumDimIds(); i < e; i++)
memo[i] = getAffineDimExpr(i - num, context);
// Set the lower and upper bound maps for all the identifiers that were
// computed as affine expressions of the rest as the "detected expr" and
- // "detected expr + 1" respectively; set the undetected ones to Null().
+ // "detected expr + 1" respectively; set the undetected ones to null.
Optional<FlatAffineConstraints> tmpClone;
for (unsigned pos = 0; pos < num; pos++) {
unsigned numMapDims = getNumDimIds() - num;