This is likely to be used in D48987 and similar patches,
so adding it as an NFC preliminary step.
llvm-svn: 336442
/// floating-point constant with all NaN elements.
bool isNaN() const;
+ /// Return true if this is a vector constant that includes any undefined
+ /// elements.
+ bool containsUndefElement() const;
+
/// Return true if evaluation of this constant could trap. This is true for
/// things like constant expressions that could divide by zero.
bool canTrap() const;
return true;
}
+bool Constant::containsUndefElement() const {
+ if (!getType()->isVectorTy())
+ return false;
+ for (unsigned i = 0, e = getType()->getVectorNumElements(); i != e; ++i)
+ if (isa<UndefValue>(getAggregateElement(i)))
+ return true;
+
+ return false;
+}
+
/// Constructor to create a '0' constant of arbitrary type.
Constant *Constant::getNullValue(Type *Ty) {
switch (Ty->getTypeID()) {