aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/Analysis/DataStructure/DSGraphTraits.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-11-06 06:20:27 +0000
committerChris Lattner <sabre@nondot.org>2002-11-06 06:20:27 +0000
commit08db719c4b1134746da5d03b22f0da4050c91f99 (patch)
tree89433bb3d0f5552f6819e65aef467ed1531f529e /include/llvm/Analysis/DataStructure/DSGraphTraits.h
parent4268c93b0082509f96dea6e3934c6306ab7da2ee (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.h9
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