Add new ConstantArray::isString(), as the conditions for using getString()

are complex enough to check that it should be a seperate method.

While I'm here, improve ConstantArray::getNullValue a bit, though the
FIXME is still quite valid.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10850 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2004-01-14 17:06:21 +00:00
parent d6942d7633
commit 9b0a5ee5bb

View File

@ -304,9 +304,12 @@ public:
return reinterpret_cast<const ArrayType*>(Value::getType()); return reinterpret_cast<const ArrayType*>(Value::getType());
} }
/// getAsString - If the sub-element type of this array is either sbyte or /// isString - This method returns true if the array is an array of sbyte or
/// ubyte, then this method converts the array to an std::string and returns /// ubyte, and if the elements of the array are all ConstantInt's.
/// it. Otherwise, it asserts out. bool isString() const;
/// getAsString - If this array is isString(), then this method converts the
/// array to an std::string and returns it. Otherwise, it asserts out.
/// ///
std::string getAsString() const; std::string getAsString() const;
@ -319,9 +322,13 @@ public:
virtual bool isNullValue() const { virtual bool isNullValue() const {
// FIXME: This should be made to be MUCH faster. Just check against well // FIXME: This should be made to be MUCH faster. Just check against well
// known null value! // known null value!
for (unsigned i = 0, e = getNumOperands(); i != e; ++i) if (getNumOperands()) {
if (!cast<Constant>(getOperand(i))->isNullValue()) const Constant *First = cast<Constant>(getOperand(0));
return false; if (!First->isNullValue()) return false;
for (unsigned i = 1, e = getNumOperands(); i != e; ++i)
if (cast<Constant>(getOperand(i)) != First)
return false;
}
return true; return true;
} }