We should re-consider the design decision that led to this gotcah, but
for now just document it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282367
91177308-0d34-0410-b5e6-
96231b3b80d8
/// This class represents a composition of other SCEV predicates, and is the
/// class that most clients will interact with. This is equivalent to a
/// logical "AND" of all the predicates in the union.
+///
+/// NB! Unlike other SCEVPredicate sub-classes this class does not live in the
+/// ScalarEvolution::Preds folding set. This is why the \c add function is sound.
class SCEVUnionPredicate final : public SCEVPredicate {
private:
typedef DenseMap<const SCEV *, SmallVector<const SCEVPredicate *, 4>>