[llvm-commits] CVS: llvm/lib/Support/ConstantRange.cpp

Nick Lewycky nicholas at mxc.ca
Sat Mar 10 07:54:30 PST 2007



Changes in directory llvm/lib/Support:

ConstantRange.cpp updated: 1.40 -> 1.41
---
Log message:

Add getter methods for the extremes of a ConstantRange.


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

 ConstantRange.cpp |   64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 64 insertions(+)


Index: llvm/lib/Support/ConstantRange.cpp
diff -u llvm/lib/Support/ConstantRange.cpp:1.40 llvm/lib/Support/ConstantRange.cpp:1.41
--- llvm/lib/Support/ConstantRange.cpp:1.40	Thu Mar  1 21:33:05 2007
+++ llvm/lib/Support/ConstantRange.cpp	Sat Mar 10 09:54:12 2007
@@ -84,6 +84,70 @@
   return Upper - Lower;
 }
 
+/// getUnsignedMax - Return the largest unsigned value contained in the
+/// ConstantRange.
+///
+APInt ConstantRange::getUnsignedMax() const {
+  if (isFullSet() || isWrappedSet())
+    return APInt::getMaxValue(getBitWidth());
+  else
+    return getUpper() - 1;
+}
+
+/// getUnsignedMin - Return the smallest unsigned value contained in the
+/// ConstantRange.
+///
+APInt ConstantRange::getUnsignedMin() const {
+  if (isFullSet() || (isWrappedSet() && getUpper() != 0))
+    return APInt::getMinValue(getBitWidth());
+  else
+    return getLower();
+}
+
+/// getSignedMax - Return the largest signed value contained in the
+/// ConstantRange.
+///
+APInt ConstantRange::getSignedMax() const {
+  APInt SignedMax = APInt::getSignedMaxValue(getBitWidth());
+  if (!isWrappedSet()) {
+    if (getLower().slt(getUpper() - 1))
+      return getUpper() - 1;
+    else
+      return SignedMax;
+  } else {
+    if ((getUpper() - 1).slt(getLower())) {
+      if (getLower() != SignedMax)
+        return SignedMax;
+      else
+        return getUpper() - 1;
+    } else {
+      return getUpper() - 1;
+    }
+  }
+}
+
+/// getSignedMin - Return the smallest signed value contained in the
+/// ConstantRange.
+///
+APInt ConstantRange::getSignedMin() const {
+  APInt SignedMin = APInt::getSignedMinValue(getBitWidth());
+  if (!isWrappedSet()) {
+    if (getLower().slt(getUpper() - 1))
+      return getLower();
+    else
+      return SignedMin;
+  } else {
+    if ((getUpper() - 1).slt(getLower())) {
+      if (getUpper() != SignedMin)
+        return SignedMin;
+      else
+        return getLower();
+    } else {
+      return getLower();
+    }
+  }
+}
+
 /// contains - Return true if the specified value is in the set.
 ///
 bool ConstantRange::contains(const APInt &V) const {






More information about the llvm-commits mailing list