search for: printedset

Displaying 6 results from an estimated 6 matches for "printedset".

2009 Sep 06
2
[LLVMdev] Graphviz and LLVM-TV
...w graph from which you can enumerate all dataflows, but you could take each instruction in a function that you're interested in, and output a dataflow graph rooted at that instruction, unless that instruction was part of some other dataflow graph already. Perhaps something like: SmallValueSet PrintedSet; for (Function::arg_iterator I=F.arg_begin(), E=F.arg_end(); I != E; ++I) { if (!PrintedSet.count(*I)) { ... print graph rooted at V, add each node printed to PrintedSet } } for (inst_iterator I=inst_begin(F), E=inst_end(F); I != E; ++I) { if (!PrintedSet.count(*...
2009 Sep 06
0
[LLVMdev] Graphviz and LLVM-TV
...ot; instructions and traverse each chain of instruction (data-flow) separately. Considering that most dataflows are not simple expanding trees, and are instead merging and spliting at several points, I'm not sure what good that would do. > Perhaps something like: > > SmallValueSet PrintedSet; > for (Function::arg_iterator I=F.arg_begin(), E=F.arg_end(); I != E; ++I) { > if (!PrintedSet.count(*I)) { > ... print graph rooted at V, add each node printed to > PrintedSet > } > } > for (inst_iterator I=inst_begin(F), E=inst_end(F); I != E; ++...
2009 Sep 06
3
[LLVMdev] Graphviz and LLVM-TV
...f you start at 'c' the graph will contain only 'z' and 'y'. This is unlike CFG graphs where the entrypoint in a function is the root of the CFG for that function, the DFG graphs are disjoint in this case. > >> Perhaps something like: >> >> SmallValueSet PrintedSet; >> for (Function::arg_iterator I=F.arg_begin(), E=F.arg_end(); I != E; >> ++I) { >> if (!PrintedSet.count(*I)) { >> ... print graph rooted at V, add each node printed to >> PrintedSet >> } } >> for (inst_iterator I=inst_begin(F)...
2009 Sep 06
0
[LLVMdev] Graphviz and LLVM-TV
I've tried to write a DFGPrinter based on the CFGPrinter, as you suggested, but encountered problems. The GraphWriter expects GraphTraits<GraphType>::nodes_begin()/nodes_end(). The way this is implemented in CFG.h, a function is a graph of basic blocks. A GraphTraits<Function*> inherits from GraphTraits<BasicBlock*>, and implements those nodes_begin()/nodes_end()
2009 Aug 13
1
[LLVMdev] Graphviz and LLVM-TV
Hi Ioannis, On Thu, 2009-08-13 at 19:31 +0100, Ioannis Nousias wrote: > Thanks Tobi for the tip. > > however I also need the Data-Flow-Graph of each basic block/functions. > As I said, I need a view of how the instructions 'link' to each other > (via registers or memory aliasing or whatnot) I believe that there is not yet a DOT printer for this kind of information.
2009 Sep 07
0
[LLVMdev] Graphviz and LLVM-TV
...ph will contain only 'z' > and 'y'. > This is unlike CFG graphs where the entrypoint in a function is the root > of the CFG for that function, the DFG graphs are disjoint in this case. > > >>> Perhaps something like: >>> >>> SmallValueSet PrintedSet; >>> for (Function::arg_iterator I=F.arg_begin(), E=F.arg_end(); I != E; >>> ++I) { >>> if (!PrintedSet.count(*I)) { >>> ... print graph rooted at V, add each node printed to >>> PrintedSet >>> } } >>> for (i...