summaryrefslogtreecommitdiff
path: root/include/llvm/Support/GetElementPtrTypeIterator.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-11-25 20:17:49 +0000
committerChris Lattner <sabre@nondot.org>2003-11-25 20:17:49 +0000
commitc4c6b9e5bc062763578eb63a011f447de1eeddc6 (patch)
treed87c7dd0b12ad49a4cf3934768213129d316f947 /include/llvm/Support/GetElementPtrTypeIterator.h
parent9d7c9ea05316bab07b2b83caa357dac220078a65 (diff)
downloadllvm-c4c6b9e5bc062763578eb63a011f447de1eeddc6.tar.gz
llvm-c4c6b9e5bc062763578eb63a011f447de1eeddc6.tar.bz2
llvm-c4c6b9e5bc062763578eb63a011f447de1eeddc6.tar.xz
Work with gepi's and constant exprs. Also, add versions of iterator ctors that take references
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10220 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Support/GetElementPtrTypeIterator.h')
-rw-r--r--include/llvm/Support/GetElementPtrTypeIterator.h17
1 files changed, 12 insertions, 5 deletions
diff --git a/include/llvm/Support/GetElementPtrTypeIterator.h b/include/llvm/Support/GetElementPtrTypeIterator.h
index 95f02a8b6a..c1533e07b8 100644
--- a/include/llvm/Support/GetElementPtrTypeIterator.h
+++ b/include/llvm/Support/GetElementPtrTypeIterator.h
@@ -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