[Soot-list] Slicing or transitive closure RD

Marc-André Laverdière-Papineau marc-andre.laverdiere-papineau at polymtl.ca
Tue Jul 2 08:19:46 EDT 2013


Hello,

Transitive closure is a computer science term most often forgotten right
after theoretical CS courses' exams :)

https://en.wikipedia.org/wiki/Transitive_closure

Marc-André Laverdière-Papineau
Doctorant - PhD Candidate

On 29/06/13 07:24 AM, Zeinab Lashkaripour wrote:
> 
> Hi everyone,
> 
> I was getting information about Indus from Venkatesh Prasad Ranganath in
> order to use there slicer for the issue I want to solve mentioned in [1]
> (which has been previously discussed in the list) and he said:
> 
>> Here's a simple solution to the simplified version of the problem --
> w/o aliasing and concurrency. 
>> For every function,
> 
>  1. calculate the def-use relation that relates every def to every use
>     site.  Note, every def site is an assignment statement; hence, most
>     often, every def site is also a use site (because of the LHS
>     expression).
>  2. calculate the transitive closure of the above relation.
>  3. identify the expressions influenced by function parameter definition
>     site d as every use site u such that (d, u) is a member of the above
>     transitive relation.
> 
>> The def-use relation may be influenced by the granularity of
> expressions and statements.
>> Something to keep in mind while implementing the above idea.
> 
> I am not aware of transitive closure therefore could the compiler
> experts please tell me what I should do?
> Is the above solution enough or do I need slicing in my case?
> 
> Regards,
> Zeinab
> 
> [1]
> I have some functions that they have inputs. In these functions these
> inputs can be used in local variables of the function, inside loop
> conditions (I only need intra-procrdural information).
> I want to identify those local variables that have used these inputs and
> also process loop conditions to see if they are related to the input or
> not. (relation with input in condition and local variable can be direct
> or indirect)
> 
> Consider the function bellow:
> (I should mention that by loop I mean both loops and if-else statements)
> fn (input1)
> {
>       loop with condition related to input -----> direct / indirect /
> not  related
>       {
>              string that can use the input either direct or indirect
>       }
>  }
> 
> I might have the situations bellow that I want to extract these parts
> and use them for adding transformation (in some cases even the body of
> "else" might be needed):
> 
>  1. no loop only the string that uses the input (direct or indirect) ->
>     I want that string
>  2. loop's condition is not related to the input but has a string that
>     uses the input inside the loop -> I want that string
>  3. loop's condition is related to the input (direct or indirect) but
>     has no string that uses the input inside the loop -> I want that
>     condition
>  4. loop's condition is related to the input (direct or indirect) and
>     has a string that uses the input inside the loop -> I want that
>     condition and the string
> 
> As I said loops might be if-else statements therefore there might be an
> else and that should be considered too.
> 
> 
> 
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> 


More information about the Soot-list mailing list