[LLVMdev] interprocedural static backwards slicing

John Criswell criswell at illinois.edu
Mon Oct 10 09:30:43 PDT 2011


On 10/9/11 12:12 AM, Jinwook Shin wrote:
> Thanks John. I appreciate your help and I look forward to obtaining the code.
>
> A proper LLVM sub-project: No rush on this and please take your time. Thanks.

Okay, I've created a new LLVM sub-project called Giri(*).  It currently 
contains only the static backwards slicing pass.  I'll add the dynamic 
slicing code to the project later.

The static slicing code works with LLVM 2.7 and the release_27 branch of 
the poolalloc project (the poolalloc project contains our DSA points-to 
analysis pass which the static slicing code uses to get the program's 
callgraph).

You can get the code using the following SVN command:

cd llvm/projects
svn co https://llvm.org/svn/llvm-project/poolalloc/branches/release_27 
poolalloc
svn co https://llvm.org/svn/llvm-project/giri/trunk giri

Inside of your LLVM object tree, you need to configure the projects.  
For example, if your source tree and object tree are the same, you would do:

cd llvm/projects
cd poolalloc
./configure
make
cd ../giri
./configure
make

Right now, the backwards slicing code attempts to find the backwards 
slice of all stores.  Someone will need to enhance the code to find 
which stores can reach which loads and to use that information to get a 
true backwards slice.  Our DSA points-to analysis can be utilized to do 
that.

The code should also be updated to use LLVM mainline (what will be LLVM 
3.0).  The interfaces that other passes use to query its results may 
also need changing.

If you're interested in making these changes, I can give you commit 
access to the giri repository so that you can make changes directly and 
have them shared with others in the LLVM community.

-- John T.

(*) For the curious, the project is named "giri" because, to the best of 
my knowlege, this is a Japanese word that means "slice."  I believe 
"kiri" may be an alternate spelling.

>
> - Jin
>
> -----Original Message-----
> From: Criswell, John T [mailto:criswell at illinois.edu]
> Sent: Saturday, October 08, 2011 11:58 AM
> To: Jinwook Shin; llvmdev at cs.uiuc.edu
> Subject: RE: interprocedural static backwards slicing
>
> Dear Jin,
>
> I've talked with Vikram, and we agree that having this code (and a dynamic backwards slicing pass that Swarup and I wrote) in a publicly available SVN repository is a good thing.
>
> I'll try to get you a copy of the static slicing code some time next week (I should be able to work on it Monday morning) so that you can start working with it right away.  I can work on making a proper LLVM sub-project (ala http://llvm.org/docs/Projects.html) later, although I don't know exactly when I can get to that (I've got some important work priorities to contend with in mid-October).
>
> -- John T.
>
> ________________________________________
> From: Jinwook Shin [Jinwook.Shin at microsoft.com]
> Sent: Thursday, October 06, 2011 12:59 PM
> To: Criswell, John T; llvmdev at cs.uiuc.edu
> Subject: interprocedural static backwards slicing
>
> Hello John et al -
>
> I have been struggling to implement static backwards slicing with LLVM.
> After digging llvmdev postings for some time, I see that other people were having similar difficulties and John's got almost complete code that may be shared. May I get a copy of it, too? Better yet, it would be helpful for many other people if the code were checked in to an example directory or something in the LLVM source branch.
>
> Thanks!
> - Jin
>
>




More information about the llvm-dev mailing list