- Renamed Type::isIntegral() to Type::isInteger()
authorChris Lattner <sabre@nondot.org>
Tue, 3 Sep 2002 01:05:48 +0000 (01:05 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 3 Sep 2002 01:05:48 +0000 (01:05 +0000)
  - Added new method Type::isIntegral() that is the same as isInteger, but
    also accepts bool.
SCVS: ----------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3572 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ConstantHandling.h
include/llvm/Type.h
lib/Analysis/Expressions.cpp
lib/VMCore/ConstantFold.h
lib/VMCore/ConstantFolding.h

index cd10f9d0c87fb861f3a78201dfaac2543fc2a5e3..546b37e605fc1cd74550e7feb59cd6d700106f74 100644 (file)
@@ -169,12 +169,12 @@ inline Constant *operator^(const Constant &V1, const Constant &V2) {
 
 // Shift Instructions...
 inline Constant *operator<<(const Constant &V1, const Constant &V2) {
-  assert(V1.getType()->isIntegral() && V2.getType() == Type::UByteTy);
+  assert(V1.getType()->isInteger() && V2.getType() == Type::UByteTy);
   return ConstRules::get(V1)->shl(&V1, &V2);
 }
 
 inline Constant *operator>>(const Constant &V1, const Constant &V2) {
-  assert(V1.getType()->isIntegral() && V2.getType() == Type::UByteTy);
+  assert(V1.getType()->isInteger() && V2.getType() == Type::UByteTy);
   return ConstRules::get(V1)->shr(&V1, &V2);
 }
 
index a86c220382f66143f5ac63f127a9d8f2cfb0d191..3cf08a3bb52656432cb44e526284e8615f2a2821 100644 (file)
@@ -121,19 +121,28 @@ public:
   /// getDescription - Return the string representation of the type...
   inline const std::string &getDescription() const { return Desc; }
 
-  /// isSigned - Return whether a numeric type is signed.
+  /// isSigned - Return whether an integral numeric type is signed.  This is
+  /// true for SByteTy, ShortTy, IntTy, LongTy.  Note that this is not true for
+  /// Float and Double.
+  //
   virtual bool isSigned() const { return 0; }
   
-  /// isUnsigned - Return whether a numeric type is unsigned.  This is not 
-  /// quite the complement of isSigned... nonnumeric types return false as they
-  /// do with isSigned.
+  /// isUnsigned - Return whether a numeric type is unsigned.  This is not quite
+  /// the complement of isSigned... nonnumeric types return false as they do
+  /// with isSigned.  This returns true for UByteTy, UShortTy, UIntTy, and
+  /// ULongTy
   /// 
   virtual bool isUnsigned() const { return 0; }
 
-  /// isIntegral - Equilivent to isSigned() || isUnsigned, but with only a
+  /// isInteger - Equilivent to isSigned() || isUnsigned(), but with only a
   /// single virtual function invocation.
   ///
-  virtual bool isIntegral() const { return 0; }
+  virtual bool isInteger() const { return 0; }
+
+  /// isIntegral - Returns true if this is an integral type, which is either
+  /// BoolTy or one of the Integer types.
+  ///
+  bool isIntegral() const { return isInteger() || this == BoolTy; }
 
   /// isFloatingPoint - Return true if this is one of the two floating point
   /// types
index 7901b1421e5c34a4f284dde5de39b14b8607851f..14ba9c8e9dcfcf6a3242944cc266beb7e8f65346 100644 (file)
@@ -30,7 +30,7 @@ ExprType::ExprType(const ConstantInt *scale, Value *var,
                   const ConstantInt *offset) {
   Scale = var ? scale : 0; Var = var; Offset = offset;
   ExprTy = Scale ? ScaledLinear : (Var ? Linear : Constant);
-  if (Scale && Scale->equalsInt(0)) {  // Simplify 0*Var + const
+  if (Scale && Scale->isNullValue()) {  // Simplify 0*Var + const
     Scale = 0; Var = 0;
     ExprTy = Constant;
   }
@@ -245,9 +245,9 @@ ExprType ClassifyExpression(Value *Expr) {
     return Expr;
   case Value::ConstantVal:              // Constant value, just return constant
     Constant *CPV = cast<Constant>(Expr);
-    if (CPV->getType()->isIntegral()) { // It's an integral constant!
+    if (CPV->getType()->isInteger()) { // It's an integral constant!
       ConstantInt *CPI = cast<ConstantInt>(Expr);
-      return ExprType(CPI->equalsInt(0) ? 0 : CPI);
+      return ExprType(CPI->isNullValue() ? 0 : CPI);
     }
     return Expr;
   }
index cd10f9d0c87fb861f3a78201dfaac2543fc2a5e3..546b37e605fc1cd74550e7feb59cd6d700106f74 100644 (file)
@@ -169,12 +169,12 @@ inline Constant *operator^(const Constant &V1, const Constant &V2) {
 
 // Shift Instructions...
 inline Constant *operator<<(const Constant &V1, const Constant &V2) {
-  assert(V1.getType()->isIntegral() && V2.getType() == Type::UByteTy);
+  assert(V1.getType()->isInteger() && V2.getType() == Type::UByteTy);
   return ConstRules::get(V1)->shl(&V1, &V2);
 }
 
 inline Constant *operator>>(const Constant &V1, const Constant &V2) {
-  assert(V1.getType()->isIntegral() && V2.getType() == Type::UByteTy);
+  assert(V1.getType()->isInteger() && V2.getType() == Type::UByteTy);
   return ConstRules::get(V1)->shr(&V1, &V2);
 }
 
index cd10f9d0c87fb861f3a78201dfaac2543fc2a5e3..546b37e605fc1cd74550e7feb59cd6d700106f74 100644 (file)
@@ -169,12 +169,12 @@ inline Constant *operator^(const Constant &V1, const Constant &V2) {
 
 // Shift Instructions...
 inline Constant *operator<<(const Constant &V1, const Constant &V2) {
-  assert(V1.getType()->isIntegral() && V2.getType() == Type::UByteTy);
+  assert(V1.getType()->isInteger() && V2.getType() == Type::UByteTy);
   return ConstRules::get(V1)->shl(&V1, &V2);
 }
 
 inline Constant *operator>>(const Constant &V1, const Constant &V2) {
-  assert(V1.getType()->isIntegral() && V2.getType() == Type::UByteTy);
+  assert(V1.getType()->isInteger() && V2.getType() == Type::UByteTy);
   return ConstRules::get(V1)->shr(&V1, &V2);
 }