[LLVMdev] Iterating on the DSGraph...
Chris Lattner
sabre at nondot.org
Fri Nov 8 17:18:01 PST 2002
> What is the best way to implement a traversal of the DS graph, starting at
> a scalar and processing all nodes to which the scalar allows access?
> Currently the links vector is not public and there is no apparent way to
> bound the getLink call (ie a getNumLinks call)....
Warning, untested code follows, but you should get the idea:
#include "llvm/Analysis/DSGraphTraits.h"
DSNode *N = ...
// Visit all children of a node...
for (DSNode::iterator I = N->begin(), E = N->end(); I != E; ++I)
if (I->getNode())
visit(I->getNode(), I->getOffset());
// Depth first traversal from a node:
#include "Support/DepthFirstIterator.h"
for (df_iterator<DSNode*> I = df_begin(N), E = df_end(); I != E; ++I)
visit(*I);
Note that this hasn't been tested recently, but it should basically
work.
-Chris
--
http://llvm.cs.uiuc.edu/
http://www.nondot.org/~sabre/Projects/
More information about the llvm-dev
mailing list