Now that ConstantPointerRef is gone, it is the case that all operands of constants
authorChris Lattner <sabre@nondot.org>
Wed, 4 Aug 2004 02:43:00 +0000 (02:43 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 4 Aug 2004 02:43:00 +0000 (02:43 +0000)
are themselves constants.  This should allow us to reduce a significant amount
of casting in the sourcebase.

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

include/llvm/Constant.h

index fda1005ef18a9b5e6858896fc115f722dad65883..c765503736e99a5089629a0cf5e8fa72cc55401b 100644 (file)
@@ -40,6 +40,18 @@ public:
 
   virtual void print(std::ostream &O) const;
 
+  // Specialize get/setOperand for Constant's as their operands are always
+  // constants as well.
+  Constant *getOperand(unsigned i) { 
+    return static_cast<Constant*>(User::getOperand(i));
+  }
+  const Constant *getOperand(unsigned i) const {
+    return static_cast<const Constant*>(User::getOperand(i));
+  }
+  void setOperand(unsigned i, Constant *C) {
+    User::setOperand(i, C);
+  }
+
   /// destroyConstant - Called if some element of this constant is no longer
   /// valid.  At this point only other constants may be on the use_list for this
   /// constant.  Any constants on our Use list must also be destroy'd.  The