|Loop dependency analysis for C programs email@example.com (firstname.lastname@example.org) (2006-11-29)|
|Re: Loop dependency analysis for C programs DrDiettrich1@aol.com (Hans-Peter Diettrich) (2006-11-29)|
|Re: Loop dependency analysis for C programs email@example.com (firstname.lastname@example.org) (2006-11-30)|
|Re: Loop dependency analysis for C programs email@example.com (Dmitry Marienko) (2006-12-01)|
|Re: Loop dependency analysis for C programs Sid.Touati@inria.fr (Sid Touati) (2006-12-01)|
|Re: Loop dependency analysis for C programs firstname.lastname@example.org (Paul Anderson) (2006-12-01)|
|Re: Loop dependency analysis for C programs email@example.com (neal) (2006-12-01)|
|Re: Loop dependency analysis for C programs firstname.lastname@example.org (Robert H) (2006-12-03)|
|From:||Paul Anderson <email@example.com>|
|Date:||1 Dec 2006 09:19:34 -0500|
|Posted-Date:||01 Dec 2006 09:19:34 EST|
>>>I am planning to do loop dependency analysis for C programs. Could you
>>>tell me the best way to get the loop structure?
>>You want to create an "control flow graph" (CFG).
> But how can CFG help in loop dependency analysis. I want to find out
> whether the iterations of a particular loop are paralleizable. For this
> i need to get the loop index variable and anyother variables depending
> on that.
> I got one parser named 'ELSA'. It has the option to write the AST into
> an XML file. I think i can use some xml parser to get an AST data
> structure from that. But is there any other tool that provides an AST
> that can be directly used in my program?
You should check out our product CodeSurfer. For a C/C++ program it
produces a variety of representations:
ASTs, both unnormalized and normalized
CFGs, one for each procedure with each node associated
with a normalized AST fragment
The call graph, and the strongly-connected components thereof
GMOD/GREF, the set of non-local variables modified/used
directly or transitively for each procedure
The points-to graph, based on Andersen's context and
flow-insensitive algorithm, but with extensions
that yield some context sensitivity.
These representations are all cross-associated, and there is a
coordinate system that allows a user to get back to the source
There are built-in queries on these representations, including
slicing and chopping. The Path Inspector extension provides
model checking on the interprocedural control flow graph, with
the property to be checked specified as a state machine.
Counter examples are shown as paths through the program.
These analyses are interprocedural and whole program. Computing
some of them can be very expensive, so you can turn off those
that you don't need.
Scheme is used as a scripting language, giving access to all
of the above representations.
If you are an educator you can sign up for our academic program,
which lets you use CodeSurfer free of charge.
We don't compute loop-carried dependence edges or anti-dependence
edges, but you can code those up fairly easily.
I hope this helps,
Return to the
Search the comp.compilers archives again.