#include "llvm/DerivedTypes.h"
namespace llvm {
- template<typename ItTy = User::op_iterator>
+ template<typename ItTy = User::const_op_iterator>
class generic_gep_type_iterator
: public forward_iterator<const Type *, ptrdiff_t> {
typedef forward_iterator<const Type*, ptrdiff_t> super;
typedef generic_gep_type_iterator<> gep_type_iterator;
- inline gep_type_iterator gep_type_begin(User *GEP) {
+ inline gep_type_iterator gep_type_begin(const User *GEP) {
return gep_type_iterator::begin(GEP->getOperand(0)->getType(),
GEP->op_begin()+1);
}
- inline gep_type_iterator gep_type_end(User *GEP) {
+ inline gep_type_iterator gep_type_end(const User *GEP) {
return gep_type_iterator::end(GEP->op_end());
}
- inline gep_type_iterator gep_type_begin(User &GEP) {
+ inline gep_type_iterator gep_type_begin(const User &GEP) {
return gep_type_iterator::begin(GEP.getOperand(0)->getType(),
GEP.op_begin()+1);
}
- inline gep_type_iterator gep_type_end(User &GEP) {
+ inline gep_type_iterator gep_type_end(const User &GEP) {
return gep_type_iterator::end(GEP.op_end());
}