Displaying 20 results from an estimated 2000 matches similar to: "[LLVMdev] How to view CFG of loop (not complete function)"
2012 May 31
2
[LLVMdev] DFG of machine functions
Hi,
I am trying to generate the DFG of machine functions.
Initially, I added a pass to generate the DFG of LLVM IR functions. This
was based on the mail thread -
http://lists.cs.uiuc.edu/pipermail/llvmdev/2009-September/025582.html. This
pass worked fine and I was able to generate DFG of LLVM IR functions.
Later, I ported the DFG pass code for machine functions. I ported the
InstIterator.h
2012 Jun 02
0
[LLVMdev] DFG of machine functions
I tried debugging it and the issue seems to be in the implementation of
MachineInstrIterator.h and the way it interacts with GraphWriter.h
functions. I found this by replacing the ( template <> struct
GraphTraits<MCDFGraph<MachineFunction*> >) with a similar MCDFGraph based
template of CFG similar to the one in MachineFunction.h (similarly
replacing the DOTGraphTraits with the
2009 Sep 07
0
[LLVMdev] Graphviz and LLVM-TV
Edwin,
thanks, it starts making sense
inline comments...
Török Edwin wrote:
> On 2009-09-06 19:57, Ioannis Nousias wrote:
>
>> Edwin,
>>
>> thank you for your effort, but I'm not sure I understand.
>> Are you describing a graph traversal problem? Is the data model stored
>> in a predecessor/successor fashion, which requires you to 'walk' the
2009 Sep 06
3
[LLVMdev] Graphviz and LLVM-TV
On 2009-09-06 19:57, Ioannis Nousias wrote:
> Edwin,
>
> thank you for your effort, but I'm not sure I understand.
> Are you describing a graph traversal problem? Is the data model stored
> in a predecessor/successor fashion, which requires you to 'walk' the
> graph in order to visit all nodes? (and what happens when you have
> disjointed DFGs?).
Sorry for the
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 06
2
[LLVMdev] Graphviz and LLVM-TV
On 2009-09-06 17:30, Ioannis Nousias wrote:
> 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
2009 Aug 13
7
[LLVMdev] Graphviz and LLVM-TV
Hi
I'm trying to get a graphviz output (DOT) of a code I'm compiling. I
want to see the DFG/CFG of the LLVM assembly, how the operations are
chained together. The documentation mentions something about calling
certain methods from within gdb, but isn't there some option when
invoking the compiler (I've seen some -print-cfg and -dot-cfg options
mentioned in some source files,
2009 Sep 06
0
[LLVMdev] Graphviz and LLVM-TV
Edwin,
thank you for your effort, but I'm not sure I understand.
Are you describing a graph traversal problem? Is the data model stored
in a predecessor/successor fashion, which requires you to 'walk' the
graph in order to visit all nodes? (and what happens when you have
disjointed DFGs?).
inline comments follow...
Török Edwin wrote:
> On 2009-09-06 17:30, Ioannis Nousias
2015 Mar 12
2
[LLVMdev] CFG Customization
Hi John, thank you for your answer.
Sorry if I was not clear ^^'
I try to build a RCG (Resource Control Graph) which is a CFG with a
weight.
In my case, this weight corresponds to the number of heap allocations.
Then I want to add this weight to each node (then basic block) of this
graph.
I think that a CFG is a GraphTraits<BasicBlock*> then I suppose that
this RCG will be
a
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()
2010 Mar 15
1
[LLVMdev] CFG as DOT: where do node addresses come from?
Hi,
The -dot-cfg option of opt will write a diagram of an analyzed
function's CFG to DOT format. If you then open the DOT file, you will
see that the BasicBlocks are uniquely identified with hexadecimal
addresses. For example, an edge from one block to another may look like:
Node0x10026b0:s0 -> Node0x1004c20;
I've been trying to figure out where these hexadecimal addresses
2009 Jul 14
2
[LLVMdev] [patch] Dotty printer for dependency trees
Hi,
I started to work with llvm and liked the CFG dotty printer a lot.
However there was none for the dominance trees.
I implemented dotty printing for dominance trees and introduced these
new flags:
-dot-dom : Print dominance tree of function to 'dot' file
-dot-dom-only : Print dominance tree of function to 'dot' file
(with no function
2008 Sep 15
2
[LLVMdev] DOTGraphTraits and GraphWriter
Hi all,
I have two questions related to .dot graph output. Basically, I have a
graph representing a program dependence graph like structure with
(a) multiple edges between the same pair of nodes
(b) each edge having a special (different) text/label
I implemented a template-specialized version of DotGraphTraits for the
my graph structure which given a node, uses a map_iterator (similar to
the one
2008 Sep 16
2
[LLVMdev] DOTGraphTraits and GraphWriter
Hi Dan,
Thanks for the reply. I got the labels for each outgoing edge (at the
source node's 'structure' field) working. Is there a way to find out
the outgoing edge number from EdgeIter. (Basically the Node in my
graph has a a bunch of outgoing edges, so that I can just index into
that collection within the node to get the appropriate edges'
attributes).
regards,
Prakash
On Tue,
2008 Sep 16
0
[LLVMdev] DOTGraphTraits and GraphWriter
Hello Prakash,
The SelectionDAG viewers (llc -view-isel-dags etc.) support
both multiple edges between the same pair of nodes, and labels
at least for each incoming edge. See
lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp for code you
might use as an example, though it is a bit tricky.
Dan
On Sep 15, 2008, at 3:15 PM, Prakash Prabhu wrote:
> Hi all,
>
> I have two questions related
2008 Sep 22
0
[LLVMdev] DOTGraphTraits and GraphWriter
Hi Prakash,
I don't know of an easy way to do this, other than to use random-access
iterators so you can compute the distance between the edge and the
beginning of the list of edges.
Dan
On Sep 16, 2008, at 2:58 PM, Prakash Prabhu wrote:
> Hi Dan,
>
> Thanks for the reply. I got the labels for each outgoing edge (at the
> source node's 'structure' field) working. Is
2008 Apr 14
1
[LLVMdev] viewing CFG in debugging
Hi,
I tried to view the CFG when debugging a pass by "gdb opt," but the gdb
does not have DAG.viewGraph function, which is indicated at
http://www.llvm.org/docs/ProgrammersManual.html#ViewGraph. Could anyone
tell me how to make DAG* functions available in gdb?
Thanks in advance.
Lu
2012 Apr 17
5
[LLVMdev] Dragonegg + IR + llc = Dragonegg directly
Hi Duncan,
thanks for the quick reply. I understand, that the generated code is
different between the two approaches.
But I would still expect IEEE rules to be respected in any case. I do
not see any reason why -fPIC -fomit-frame-pointer
and the like should have any impact on the results computed by the
generated code.
Are there any options I can set on the command line of llc to force the
2010 Apr 09
0
[LLVMdev] graph abstraction proposal
On 04/07/2010 08:10 PM, Jochen Wilhelmy wrote:
> Hi!
>
> while trying to use llvm::DominatorTreeBase on a custom graph that
> has nothing to do with llvm::BasicBlock I ran into some difficulties,
> because llvm::DominatorTreeBase calls e.g. getParent()->front()
> directly on the nodes
Yes this is a problem. However how is it related to your proposal? Do
you want to add a
2012 Apr 17
0
[LLVMdev] Dragonegg + IR + llc = Dragonegg directly
Hi Martin,
> thanks for the quick reply. I understand, that the generated code is different
> between the two approaches.
> But I would still expect IEEE rules to be respected in any case. I do not see
> any reason why -fPIC -fomit-frame-pointer
> and the like should have any impact on the results computed by the generated code.
probably in the direct case you are using the x86