Removed unused, useless header file.
[oota-llvm.git] / include / llvm / Support / ConstantRange.h
index c173549a37abcb87b29a16724da40962a2dd50a7..30618a1692134896240d1eb6da1362a157684d0d 100644 (file)
 
 #include "Support/DataTypes.h"
 #include <iosfwd>
+
+namespace llvm {
+class Constant;
 class ConstantIntegral;
+class ConstantInt;
 class Type;
 
 class ConstantRange {
@@ -36,16 +40,20 @@ class ConstantRange {
   ///
   ConstantRange(const Type *Ty, bool isFullSet = true);
   
+  /// Initialize a range to hold the single specified value.
+  ///
+  ConstantRange(Constant *Value);
+
   /// Initialize a range of values explicitly... this will assert out if
-  /// Lower==Upper and Lower != Min or Max for its type (or if the two constants
-  /// have different types)
+  /// Lower==Upper and Lower != Min or Max for its type, if the two constants
+  /// have different types, or if the constant are not integral values.
   ///
-  ConstantRange(ConstantIntegral *Lower, ConstantIntegral *Upper);
+  ConstantRange(Constant *Lower, Constant *Upper);
   
   /// Initialize a set of values that all satisfy the condition with C.
   ///
   ConstantRange(unsigned SetCCOpcode, ConstantIntegral *C);
-  
+
   /// getLower - Return the lower value for this range...
   ///
   ConstantIntegral *getLower() const { return Lower; }
@@ -71,6 +79,10 @@ class ConstantRange {
   /// for example: [100, 8)
   ///
   bool isWrappedSet() const;
+
+  /// contains - Return true if the specified value is in the set.
+  ///
+  bool contains(ConstantInt *Val) const;
   
   /// getSingleElement - If this set contains a single element, return it,
   /// otherwise return null.
@@ -94,6 +106,10 @@ class ConstantRange {
     return !operator==(CR);
   }
 
+  /// subtract - Subtract the specified constant from the endpoints of this
+  /// constant range.
+  ConstantRange subtract(ConstantInt *CI) const;
+
   /// intersect - Return the range that results from the intersection of this
   /// range with another range.  The resultant range is pruned as much as
   /// possible, but there may be cases where elements are included that are in
@@ -110,6 +126,18 @@ class ConstantRange {
   ///
   ConstantRange unionWith(const ConstantRange &CR) const;
 
+  /// zeroExtend - Return a new range in the specified integer type, which must
+  /// be strictly larger than the current type.  The returned range will
+  /// correspond to the possible range of values if the source range had been
+  /// zero extended.
+  ConstantRange zeroExtend(const Type *Ty) const;
+
+  /// truncate - Return a new range in the specified integer type, which must be
+  /// strictly smaller than the current type.  The returned range will
+  /// correspond to the possible range of values if the source range had been
+  /// truncated to the specified type.
+  ConstantRange truncate(const Type *Ty) const;
+
   /// print - Print out the bounds to a stream...
   ///
   void print(std::ostream &OS) const;
@@ -124,4 +152,6 @@ inline std::ostream &operator<<(std::ostream &OS, const ConstantRange &CR) {
   return OS;
 }
 
+} // End llvm namespace
+
 #endif