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...