diff options
author | Chris Lattner <sabre@nondot.org> | 2002-11-06 06:20:27 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-11-06 06:20:27 +0000 |
commit | 08db719c4b1134746da5d03b22f0da4050c91f99 (patch) | |
tree | 89433bb3d0f5552f6819e65aef467ed1531f529e /include/llvm/Analysis/DataStructure/DSGraphTraits.h | |
parent | 4268c93b0082509f96dea6e3934c6306ab7da2ee (diff) |
Dramatically simplify internal DSNode representation, get implementation
*FULLY OPERATIONAL* and safe. We are now capable of completely analyzing
at LEAST the Olden benchmarks + 181.mcf
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4562 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Analysis/DataStructure/DSGraphTraits.h')
-rw-r--r-- | include/llvm/Analysis/DataStructure/DSGraphTraits.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/include/llvm/Analysis/DataStructure/DSGraphTraits.h b/include/llvm/Analysis/DataStructure/DSGraphTraits.h index bd5bf28e60..231a64c71f 100644 --- a/include/llvm/Analysis/DataStructure/DSGraphTraits.h +++ b/include/llvm/Analysis/DataStructure/DSGraphTraits.h @@ -23,7 +23,9 @@ class DSNodeIterator : public forward_iterator<const DSNode, ptrdiff_t> { DSNodeIterator(const DSNode *N) : Node(N), Offset(0) {} // begin iterator DSNodeIterator(const DSNode *N, bool) // Create end iterator - : Node(N), Offset(N->getSize()) { + : Node(N) { + Offset = (N->getSize()+((1 << DS::PointerShift)-1)) & + ~((1 << DS::PointerShift)-1); } public: DSNodeIterator(const DSNodeHandle &NH) @@ -41,13 +43,12 @@ public: } pointer operator*() const { - const DSNodeHandle *NH = Node->getLink(Offset); - return NH ? NH->getNode() : 0; + return Node->getLink(Offset).getNode(); } pointer operator->() const { return operator*(); } _Self& operator++() { // Preincrement - ++Offset; + Offset += (1 << DS::PointerShift); return *this; } _Self operator++(int) { // Postincrement |