[llvm-commits] CVS: llvm/lib/VMCore/Constants.cpp

Evan Cheng evan.cheng at apple.com
Thu Oct 26 12:15:19 PDT 2006



Changes in directory llvm/lib/VMCore:

Constants.cpp updated: 1.166 -> 1.167
---
Log message:

Add isCString() - returns true if a ConstantArray is a CString.

---
Diffs of the changes:  (+13 -0)

 Constants.cpp |   13 +++++++++++++
 1 files changed, 13 insertions(+)


Index: llvm/lib/VMCore/Constants.cpp
diff -u llvm/lib/VMCore/Constants.cpp:1.166 llvm/lib/VMCore/Constants.cpp:1.167
--- llvm/lib/VMCore/Constants.cpp:1.166	Thu Oct 26 01:15:43 2006
+++ llvm/lib/VMCore/Constants.cpp	Thu Oct 26 14:15:05 2006
@@ -1073,6 +1073,19 @@
   return true;
 }
 
+/// isCString - This method returns true if the array is a string (see
+/// isString) and it ends in a null byte \0 and does not contains any other
+/// null bytes except its terminator.
+bool ConstantArray::isCString() const {
+  if (!isString()) return false;
+  // This is safe because a ConstantArray cannot be a zero array.
+  for (unsigned i = 0, e = getNumOperands()-1; i != e; ++i)
+    if (cast<ConstantInt>(getOperand(i))->getZExtValue() == 0)
+      return false;
+  return true;
+}
+
+
 // getAsString - If the sub-element type of this array is either sbyte or ubyte,
 // then this method converts the array to an std::string and returns it.
 // Otherwise, it asserts out.






More information about the llvm-commits mailing list