For PR411:
[oota-llvm.git] / include / llvm / InstrTypes.h
index 22b52c5f73663799c76afba4e1734423e84b83d5..348671a527ab3958d41bb49edb3669a6314b355a 100644 (file)
@@ -427,7 +427,7 @@ public:
   /// involving Integer and Pointer types. They are no-op casts if the integer
   /// is the same size as the pointer. However, pointer size varies with 
   /// platform. Generally, the result of TargetData::getIntPtrType() should be
-  /// passed in. If that's not available, use Type::ULongTy, which will make
+  /// passed in. If that's not available, use Type::Int64Ty, which will make
   /// the isNoopCast call conservative.
   /// @brief Determine if this cast is a no-op cast. 
   bool isNoopCast(
@@ -454,6 +454,17 @@ public:
     return Instruction::CastOps(Instruction::getOpcode()); 
   }
 
+  /// @brief Return the source type, as a convenience
+  const Type* getSrcTy() const { return getOperand(0)->getType(); }
+  /// @brief Return the destination type, as a convenience
+  const Type* getDestTy() const { return getType(); }
+
+  /// This method can be used to determine if a cast from S to DstTy using
+  /// Opcode op is valid or not. 
+  /// @returns true iff the proposed cast is valid.
+  /// @brief Determine if a cast is valid without creating one.
+  static bool castIsValid(Instruction::CastOps op, Value *S, const Type *DstTy);
+
   /// @brief Methods for support type inquiry through isa, cast, and dyn_cast:
   static inline bool classof(const CastInst *) { return true; }
   static inline bool classof(const Instruction *I) {