[LLVMdev] llvm DSA - reproduce the result in PLDI 07 paper
John Criswell
jtcriswel at gmail.com
Mon Apr 6 14:22:18 PDT 2015
Dear Zhiyuan,
In order to reproduce the results from the paper, you'll need to
replicate a system from that era. You'll need to use the same version
of LLVM and DSA that the paper used. I think that was LLVM 1.9 (the
release_19 branch of LLVM and poolalloc), but I'm not sure. You should
check to see if the paper specifies the version.
As you'll be using a very old version of LLVM, it may be worth setting
up a VM with a corresponding old version of Linux. I suspect newer
compilers will not compile a version of LLVM that is that old, so using
an old version of Linux with an old version of GCC may be needed. I
think Fedora Core 2 is the OS we were using at the time.
To answer the question of why you can't use a modern version of LLVM and
poolalloc, it's because LLVM has changed significantly. DSA relies upon
the type annotations provided in the LLVM IR to "bootstrap" its type
inference (bootstrap is not quite the right word, but it's the closest
one of which I could think). As LLVM matured, transformations would
ditch the type information (e.g., transforming typed GEPs into untyped
GEPs into a byte array), making DSA's ability to do type-inference (and
thereby improving field sensitivity) more difficult. Throw into the mix
the fact that DSA is maintained by an academic research group, and the
result is that modern DSA doesn't have the accuracy that the original
DSA did.
The good news is that I think DSA can be fixed by making its
type-inferencing code smarter. The bad news is that it'd be a fair
amount of work to do. So far, no one has had sufficient
desire/motivation to design and implement the improvements.
Regards,
John Criswell
On 4/6/15 4:56 PM, Wan Zhiyuan wrote:
> Dear all,
> I am trying to reproduce the "Percent May Alias" result described in
> PLDI 07's paper "Making Context-Sensitive Points-to Analysis with Heap
> Cloning Practical For The Real World"
> (http://llvm.org/pubs/2007-06-10-PLDI-DSA.html).
>
> However, my "Percent May Alias" for all the benchmarks is much
> greater, especially "bzip2".
>
> The DSA code I use is from "https://github.com/smackers/smack". I have
> diff the code between smack and poolalloc_32. They are almost the same
> except the "#include" statements.
>
> I was wondering whether I need to do some configuration to make DSA
> work properly.
>
> Thank you!
>
> Zhiyuan
>
>
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
--
John Criswell
Assistant Professor
Department of Computer Science, University of Rochester
http://www.cs.rochester.edu/u/criswell
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150406/c69b71ab/attachment.html>
More information about the llvm-dev
mailing list