Changes in directory llvm/lib/Transforms/Scalar:
PredicateSimplifier.cpp updated: 1.9 -> 1.10 --- Log message: Add some more consistency checks. --- Diffs of the changes: (+20 -1) PredicateSimplifier.cpp | 21 ++++++++++++++++++++- 1 files changed, 20 insertions(+), 1 deletion(-) Index: llvm/lib/Transforms/Scalar/PredicateSimplifier.cpp diff -u llvm/lib/Transforms/Scalar/PredicateSimplifier.cpp:1.9 llvm/lib/Transforms/Scalar/PredicateSimplifier.cpp:1.10 --- llvm/lib/Transforms/Scalar/PredicateSimplifier.cpp:1.9 Wed Sep 13 14:24:01 2006 +++ llvm/lib/Transforms/Scalar/PredicateSimplifier.cpp Wed Sep 13 14:32:53 2006 @@ -106,6 +106,10 @@ return leaders.empty(); } + unsigned countLeaders() const { + return leaders.size(); + } + iterator findLeader(ElemTy e) { typename std::map<ElemTy, unsigned>::iterator MI = mapping.find(e); if (MI == mapping.end()) return 0; @@ -123,6 +127,7 @@ ElemTy &getLeader(iterator I) { assert(I != 0 && "Element zero is out of range."); + assert(I <= leaders.size() && "Invalid iterator."); return leaders[I-1]; } @@ -133,8 +138,10 @@ #ifdef DEBUG void debug(std::ostream &os) const { + std::set<Value *> Unique; for (unsigned i = 1, e = leaders.size()+1; i != e; ++i) { - os << i << ". " << *leaders[i-1] << ": ["; + Unique.insert(getLeader(i)); + os << i << ". " << *getLeader(i) << ": ["; for (std::map<Value *, unsigned>::const_iterator I = mapping.begin(), E = mapping.end(); I != E; ++I) { if ((*I).second == i && (*I).first != leaders[i-1]) { @@ -143,6 +150,14 @@ } os << "]\n"; } + assert(Unique.size() == leaders.size() && "Duplicate leaders."); + + for (typename std::map<ElemTy, unsigned>::const_iterator + I = mapping.begin(), E = mapping.end(); I != E; ++I) { + assert(I->second != 0 && "Zero iterator in mapping."); + assert(I->second <= leaders.size() && + "Invalid iterator found in mapping."); + } } #endif @@ -428,11 +443,15 @@ void debug(std::ostream &os) const { static const char *OpcodeTable[] = { "EQ", "NE" }; + unsigned int size = union_find.countLeaders(); + union_find.debug(os); for (std::vector<Property>::const_iterator I = Properties.begin(), E = Properties.end(); I != E; ++I) { os << (*I).I1 << " " << OpcodeTable[(*I).Opcode] << " " << (*I).I2 << "\n"; + assert((*I).I1 <= size && "Invalid property."); + assert((*I).I2 <= size && "Invalid property."); } os << "\n"; } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits