Extend constructor so that it can support GlobalValue's (with names).
authorReid Spencer <rspencer@reidspencer.com>
Sat, 17 Jul 2004 23:26:12 +0000 (23:26 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Sat, 17 Jul 2004 23:26:12 +0000 (23:26 +0000)
Make GlobalValue a "classof" Constant
Fix the classof(Value*) to include GlobalValue's

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

include/llvm/Constant.h

index 529603a559b4f61e9eccf642d707871be4d10c23..7b53fb16fa9156e49435890554004459960ab9e5 100644 (file)
@@ -20,7 +20,9 @@ namespace llvm {
 
 class Constant : public User {
 protected:
-  inline Constant(const Type *Ty) : User(Ty, Value::ConstantVal) {}
+  inline Constant(const Type *Ty, ValueTy vty = Value::ConstantVal, 
+                 const std::string& Name = "" ) 
+  : User(Ty, vty, Name) {}
   ~Constant() {}
 
   void destroyConstantImpl();
@@ -50,20 +52,16 @@ public:
   /// available cached constants.  Implementations should call
   /// destroyConstantImpl as the last thing they do, to destroy all users and
   /// delete this.
-  ///
-  /// Note that this call is only valid on non-primitive constants: You cannot
-  /// destroy an integer constant for example.  This API is used to delete
-  /// constants that have ConstantPointerRef's embeded in them when the module
-  /// is deleted, and it is used by GlobalDCE to remove ConstantPointerRefs that
-  /// are unneeded, allowing globals to be DCE'd.
-  ///
   virtual void destroyConstant() { assert(0 && "Not reached!"); }
 
   
   //// Methods for support type inquiry through isa, cast, and dyn_cast:
   static inline bool classof(const Constant *) { return true; }
+  static inline bool classof(const GlobalValue *) { return true; }
   static inline bool classof(const Value *V) {
-    return V->getValueType() == Value::ConstantVal;
+    return V->getValueType() == Value::ConstantVal ||
+          V->getValueType() == Value::FunctionVal ||
+          V->getValueType() == Value::GlobalVariableVal;
   }
 
   /// replaceUsesOfWithOnConstant - This method is a special form of