13 #ifndef INTEGERSETDETAIL_H_ 14 #define INTEGERSETDETAIL_H_ 18 #include "llvm/ADT/ArrayRef.h" 39 return std::get<0>(key) == dimCount && std::get<1>(key) == symbolCount &&
40 std::get<2>(key) == constraints && std::get<3>(key) ==
eqFlags;
47 res->dimCount = std::get<0>(key);
48 res->symbolCount = std::get<1>(key);
49 res->constraints = allocator.
copyInto(std::get<2>(key));
50 res->eqFlags = allocator.
copyInto(std::get<3>(key));
57 #endif // INTEGERSETDETAIL_H_ Include the generated interface declarations.
std::tuple< unsigned, unsigned, ArrayRef< AffineExpr >, ArrayRef< bool > > KeyTy
The hash key used for uniquing.
This is a utility allocator used to allocate memory for instances of derived types.
ArrayRef< AffineExpr > constraints
Array of affine constraints: a constraint is either an equality (affine_expr == 0) or an inequality (...
T * allocate()
Allocate an instance of the provided type.
bool operator==(const KeyTy &key) const
static IntegerSetStorage * construct(StorageUniquer::StorageAllocator &allocator, const KeyTy &key)
This class acts as the base storage that all storage classes must derived from.
ArrayRef< T > copyInto(ArrayRef< T > elements)
Copy the specified array of elements into memory managed by our bump pointer allocator.