Work with gepi's and constant exprs. Also, add versions of iterator ctors that take...
authorChris Lattner <sabre@nondot.org>
Tue, 25 Nov 2003 20:17:49 +0000 (20:17 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 25 Nov 2003 20:17:49 +0000 (20:17 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10220 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/GetElementPtrTypeIterator.h

index 95f02a8b6a3b4af5a19d7872565a0afefff66a3c..c1533e07b8b58a03fdde02ee30e09f7cee22c52a 100644 (file)
@@ -24,21 +24,21 @@ namespace llvm {
     : public forward_iterator<const Type *, ptrdiff_t> {
     typedef forward_iterator<const Type*, ptrdiff_t> super;
 
-    GetElementPtrInst *TheGEP;
+    User *TheGEP;          // Either GetElemenPtrInst or ConstantExpr
     const Type *CurTy;
     unsigned Operand;
     
     gep_type_iterator() {}
   public:
 
-    static gep_type_iterator begin(GetElementPtrInst *gep) {
+    static gep_type_iterator begin(User *gep) {
       gep_type_iterator I;
       I.TheGEP = gep;
       I.CurTy = gep->getOperand(0)->getType();
       I.Operand = 1;
       return I;
     }
-    static gep_type_iterator end(GetElementPtrInst *gep) {
+    static gep_type_iterator end(User *gep) {
       gep_type_iterator I;
       I.TheGEP = gep;
       I.CurTy = 0;
@@ -80,13 +80,20 @@ namespace llvm {
     }
   };
 
-  inline gep_type_iterator gep_type_begin(GetElementPtrInst *GEP) {
+  inline gep_type_iterator gep_type_begin(User *GEP) {
     return gep_type_iterator::begin(GEP);
   }
 
-  inline gep_type_iterator gep_type_end(GetElementPtrInst *GEP) {
+  inline gep_type_iterator gep_type_end(User *GEP) {
     return gep_type_iterator::end(GEP);
   }
+  inline gep_type_iterator gep_type_begin(User &GEP) {
+    return gep_type_iterator::begin(&GEP);
+  }
+
+  inline gep_type_iterator gep_type_end(User &GEP) {
+    return gep_type_iterator::end(&GEP);
+  }
 } // end namespace llvm
 
 #endif