#include "llvm/Support/InstIterator.h"
#include "llvm/Instruction.h"
-#include <iterator>
+#include <Support/iterator>
class Constant;
-class constant_iterator
- : public std::forward_iterator<const Constant, ptrdiff_t> {
+class constant_iterator : public forward_iterator<const Constant, ptrdiff_t> {
const_inst_iterator InstI; // Method instruction iterator
unsigned OpIdx; // Operand index
#include "llvm/Function.h"
#include "llvm/BasicBlock.h"
#include "llvm/InstrTypes.h"
-#include <iterator>
+#include "Support/iterator"
//===--------------------------------------------------------------------===//
// BasicBlock pred_iterator definition
//===--------------------------------------------------------------------===//
template <class _Ptr, class _USE_iterator> // Predecessor Iterator
-class PredIterator : public std::bidirectional_iterator<_Ptr, ptrdiff_t> {
+class PredIterator : public bidirectional_iterator<_Ptr, ptrdiff_t> {
+ typedef bidirectional_iterator<_Ptr, ptrdiff_t> super;
_Ptr *BB;
_USE_iterator It;
public:
typedef PredIterator<_Ptr,_USE_iterator> _Self;
+ typedef typename super::pointer pointer;
inline void advancePastConstants() {
// TODO: This is bad
//===--------------------------------------------------------------------===//
template <class _Term, class _BB> // Successor Iterator
-class SuccIterator : public std::bidirectional_iterator<_BB, ptrdiff_t> {
+class SuccIterator : public bidirectional_iterator<_BB, ptrdiff_t> {
const _Term Term;
unsigned idx;
+ typedef bidirectional_iterator<_BB, ptrdiff_t> super;
public:
typedef SuccIterator<_Term, _BB> _Self;
+ typedef typename super::pointer pointer;
// TODO: This can be random access iterator, need operator+ and stuff tho
inline SuccIterator(_Term T) : Term(T), idx(0) { // begin iterator
}
-int SlotCalculator::insertVal(const Value *D, bool dontIgnore = false) {
+int SlotCalculator::insertVal(const Value *D, bool dontIgnore) {
assert(D && "Can't insert a null value!");
assert(getValSlot(D) == -1 && "Value is already in the table!");
map<ConstHashKey, ConstantClass *> Map;
inline ConstantClass *get(const Type *Ty, ValType V) {
- map<ConstHashKey,ConstantClass *>::iterator I =
+ typename map<ConstHashKey,ConstantClass *>::iterator I =
Map.find(ConstHashKey(Ty, V));
return (I != Map.end()) ? I->second : 0;
}
}
inline void remove(ConstantClass *CP) {
- for (map<ConstHashKey,ConstantClass *>::iterator I = Map.begin(),
+ for (typename map<ConstHashKey,ConstantClass *>::iterator I = Map.begin(),
E = Map.end(); I != E;++I)
if (I->second == CP) {
Map.erase(I);
//===----------------------------------------------------------------------===//
GlobalVariable::GlobalVariable(const Type *Ty, bool constant, bool isIntern,
- Constant *Initializer = 0,
- const std::string &Name = "")
+ Constant *Initializer,
+ const std::string &Name)
: GlobalValue(PointerType::get(Ty), Value::GlobalVariableVal, isIntern, Name),
isConstantGlobal(constant) {
if (Initializer) Operands.push_back(Use((Value*)Initializer, this));
}
TerminatorInst::TerminatorInst(const Type *Ty, Instruction::TermOps iType,
- const std::string &Name = "")
+ const std::string &Name)
: Instruction(Ty, iType, Name) {
}
}
// dumpPassStructure - Implement the -debug-passes=Structure option
-void Pass::dumpPassStructure(unsigned Offset = 0) {
+void Pass::dumpPassStructure(unsigned Offset) {
std::cerr << std::string(Offset*2, ' ') << getPassName() << "\n";
}
PassManagerT(ParentClass *Par = 0) : Parent(Par), Batcher(0) {}
~PassManagerT() {
// Delete all of the contained passes...
- for (std::vector<PassClass*>::iterator I = Passes.begin(), E = Passes.end();
- I != E; ++I)
+ for (typename std::vector<PassClass*>::iterator
+ I = Passes.begin(), E = Passes.end(); I != E; ++I)
delete *I;
}
virtual void dumpPassStructure(unsigned Offset = 0) {
std::cerr << std::string(Offset*2, ' ') << Traits::getPMName()
<< " Pass Manager\n";
- for (std::vector<PassClass*>::iterator I = Passes.begin(), E = Passes.end();
- I != E; ++I) {
+ for (typename std::vector<PassClass*>::iterator
+ I = Passes.begin(), E = Passes.end(); I != E; ++I) {
PassClass *P = *I;
P->dumpPassStructure(Offset+1);
}
-int SlotCalculator::insertVal(const Value *D, bool dontIgnore = false) {
+int SlotCalculator::insertVal(const Value *D, bool dontIgnore) {
assert(D && "Can't insert a null value!");
assert(getValSlot(D) == -1 && "Value is already in the table!");
// Remove all of the items from the old symtab..
if (SymTabObject && !List.empty()) {
SymbolTable *SymTab = SymTabObject->getSymbolTable();
- for (iplist<ValueSubClass>::iterator I = List.begin(); I != List.end(); ++I)
+ for (typename iplist<ValueSubClass>::iterator I = List.begin();
+ I != List.end(); ++I)
if (I->hasName()) SymTab->remove(I);
}
// Add all of the items to the new symtab...
if (SymTabObject && !List.empty()) {
SymbolTable *SymTab = SymTabObject->getSymbolTableSure();
- for (iplist<ValueSubClass>::iterator I = List.begin(); I != List.end(); ++I)
+ for (typename iplist<ValueSubClass>::iterator I = List.begin();
+ I != List.end(); ++I)
if (I->hasName()) SymTab->insert(I);
}
}
~TypeMap() { print("ON EXIT"); }
inline TypeClass *get(const ValType &V) {
- map<ValType, PATypeHandle<TypeClass> >::iterator I = Map.find(V);
+ typename map<ValType, PATypeHandle<TypeClass> >::iterator I = Map.find(V);
// TODO: FIXME: When Types are not CONST.
return (I != Map.end()) ? (TypeClass*)I->second.get() : 0;
}
// structurally equivalent to the specified type.
//
inline const TypeClass *containsEquivalent(const TypeClass *Ty) {
- for (MapTy::iterator I = Map.begin(), E = Map.end(); I != E; ++I)
+ for (typename MapTy::iterator I = Map.begin(), E = Map.end(); I != E; ++I)
if (I->second.get() != Ty && TypesEqual(Ty, I->second.get()))
return (TypeClass*)I->second.get(); // FIXME TODO when types not const
return 0;
<< OldTy->getDescription() << " replacement == " << (void*)NewTy
<< ", " << NewTy->getDescription() << endl;
#endif
- for (MapTy::iterator I = Map.begin(), E = Map.end(); I != E; ++I)
+ for (typename MapTy::iterator I = Map.begin(), E = Map.end(); I != E; ++I)
if (I->second == OldTy) {
// Check to see if the type just became concrete. If so, remove self
// from user list.
}
void remove(const ValType &OldVal) {
- MapTy::iterator I = Map.find(OldVal);
+ typename MapTy::iterator I = Map.find(OldVal);
assert(I != Map.end() && "TypeMap::remove, element not found!");
Map.erase(I);
}
return Ty;
}
-Value::Value(const Type *ty, ValueTy vty, const std::string &name = "")
+Value::Value(const Type *ty, ValueTy vty, const std::string &name)
: Name(name), Ty(checkType(ty), this) {
VTy = vty;
}
//
if (Uses.begin() != Uses.end()) {
std::cerr << "While deleting: " << Ty << "%" << Name << "\n";
- for (use_const_iterator I = Uses.begin(); I != Uses.end(); ++I) {
- std::cerr << "Use still stuck around after Def is destroyed:";
- (*I)->dump();
- std::cerr << "\n";
- }
+ for (use_const_iterator I = Uses.begin(); I != Uses.end(); ++I)
+ std::cerr << "Use still stuck around after Def is destroyed:"
+ << **I << "\n";
}
#endif
assert(Uses.begin() == Uses.end());
Use->replaceUsesOfWith(this, D);
#ifndef NDEBUG // only in -g mode...
- if (Uses.size() == NumUses) {
- std::cerr << "Use: ";
- Use->dump();
- std::cerr << "replace with: ";
- D->dump();
- }
+ if (Uses.size() == NumUses)
+ std::cerr << "Use: " << *Use << "replace with: " << *D;
#endif
assert(Uses.size() != NumUses && "Didn't remove definition!");
}
// change Ty to point to the right type. :)
//
void Value::refineAbstractType(const DerivedType *OldTy, const Type *NewTy) {
- assert(Ty.get() == OldTy &&"Can't refine anything but my type!");
+ assert(Ty.get() == OldTy && "Can't refine anything but my type!");
if (OldTy == NewTy && !OldTy->isAbstract())
Ty.removeUserFromConcrete();
Ty = NewTy;
}
AllocationInst::AllocationInst(const Type *Ty, Value *ArraySize, unsigned iTy,
- const std::string &Name = "")
+ const std::string &Name)
: Instruction(Ty, iTy, Name) {
assert(isa<PointerType>(Ty) && "Can't allocate a non pointer type!");
//
const Type* MemAccessInst::getIndexedType(const Type *Ptr,
const std::vector<Value*> &Idx,
- bool AllowCompositeLeaf = false) {
+ bool AllowCompositeLeaf) {
if (!isa<PointerType>(Ptr)) return 0; // Type isn't a pointer type!
// Handle the special case of the empty set index set...
//===----------------------------------------------------------------------===//
LoadInst::LoadInst(Value *Ptr, const std::vector<Value*> &Idx,
- const std::string &Name = "")
+ const std::string &Name)
: MemAccessInst(checkType(getIndexedType(Ptr->getType(), Idx)), Load, Name) {
assert(getIndexedType(Ptr->getType(), Idx) && "Load operands invalid!");
Operands.reserve(1+Idx.size());
}
-LoadInst::LoadInst(Value *Ptr, const std::string &Name = "")
+LoadInst::LoadInst(Value *Ptr, const std::string &Name)
: MemAccessInst(cast<PointerType>(Ptr->getType())->getElementType(),
Load, Name) {
Operands.reserve(1);
//===----------------------------------------------------------------------===//
GetElementPtrInst::GetElementPtrInst(Value *Ptr, const std::vector<Value*> &Idx,
- const std::string &Name = "")
+ const std::string &Name)
: MemAccessInst(PointerType::get(checkType(getIndexedType(Ptr->getType(),
Idx, true))),
GetElementPtr, Name) {