Provide support for HP/UX aCC compiler's variant of hash_map and hash_set
[oota-llvm.git] / include / llvm / User.h
index cdd9b539ca4f17b752db178d25e897c6ab812b77..47f300cd534aafe9888cc43ff8feec4903f5a8f7 100644 (file)
@@ -29,7 +29,8 @@ class User : public Value {
 protected:
   std::vector<Use> Operands;
 public:
-  User(const Type *Ty, ValueTy vty, const std::string &name = "");
+  User(const Type *Ty, unsigned vty, const std::string &name = "")
+    : Value(Ty, vty, name) {}
 
   inline Value *getOperand(unsigned i) { 
     assert(i < Operands.size() && "getOperand() out of range!");
@@ -43,7 +44,7 @@ public:
     assert(i < Operands.size() && "setOperand() out of range!");
     Operands[i] = Val;
   }
-  inline unsigned getNumOperands() const { return Operands.size(); }
+  inline unsigned getNumOperands() const { return (unsigned)Operands.size(); }
 
   // ---------------------------------------------------------------------------
   // Operand Iterator interface...
@@ -86,9 +87,7 @@ public:
   // Methods for support type inquiry through isa, cast, and dyn_cast:
   static inline bool classof(const User *) { return true; }
   static inline bool classof(const Value *V) {
-    return V->getValueType() == Value::GlobalVariableVal ||
-           V->getValueType() == Value::ConstantVal ||
-           V->getValueType() == Value::InstructionVal;
+    return isa<Instruction>(V) || isa<Constant>(V);
   }
 };
 
@@ -96,7 +95,7 @@ template<> struct simplify_type<User::op_iterator> {
   typedef Value* SimpleType;
   
   static SimpleType getSimplifiedValue(const User::op_iterator &Val) {
-    return (SimpleType)Val->get();
+    return static_cast<SimpleType>(Val->get());
   }
 };
 template<> struct simplify_type<const User::op_iterator>
@@ -106,7 +105,7 @@ template<> struct simplify_type<User::const_op_iterator> {
   typedef Value* SimpleType;
   
   static SimpleType getSimplifiedValue(const User::const_op_iterator &Val) {
-    return (SimpleType)Val->get();
+    return static_cast<SimpleType>(Val->get());
   }
 };
 template<> struct simplify_type<const User::const_op_iterator>