<div dir="ltr">Dear John,<div>I intend to implement the improvements on DSA.</div><div>After running DSA on SPEC, I found DSA gives low precision for mcf and bzip2.</div><div>I have checked the most imprecise c files in mcf an found that the code seems to be a mixture of "PHI" and "GEP" instructions.</div><div><br></div><div>Could you please give me some hints about what the big picture of the improvement should be and how to start?</div><div><br></div><div>Thank you!</div><div><br></div><div>Regards,</div><div>Zhiyuan</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Apr 6, 2015 at 5:22 PM, John Criswell <span dir="ltr"><<a href="mailto:jtcriswel@gmail.com" target="_blank">jtcriswel@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <div>Dear Zhiyuan,<br>
      <br>
      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.<br>
      <br>
      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.<br>
      <br>
      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.<br>
      <br>
      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.<br>
      <br>
      Regards,<br>
      <br>
      John Criswell<div><div class="h5"><br>
      <br>
      <br>
      On 4/6/15 4:56 PM, Wan Zhiyuan wrote:<br>
    </div></div></div>
    <blockquote type="cite"><div><div class="h5">
      <div dir="ltr">Dear all,
        <div>
          <div>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" (<a href="http://llvm.org/pubs/2007-06-10-PLDI-DSA.html" target="_blank">http://llvm.org/pubs/2007-06-10-PLDI-DSA.html</a>).</div>
        </div>
        <div><br>
        </div>
        <div>However, my "Percent May Alias" for all the benchmarks is
          much greater, especially "bzip2".</div>
        <div><br>
        </div>
        <div>The DSA code I use is from "<a href="https://github.com/smackers/smack" target="_blank">https://github.com/smackers/smack</a>".
          I have diff the code between smack and poolalloc_32. They are
          almost the same except the "#include" statements.</div>
        <div><br>
        </div>
        <div>I was wondering whether I need to do some configuration to
          make DSA work properly.</div>
        <div><br>
        </div>
        <div>Thank you!</div>
        <div><br>
        </div>
        <div>Zhiyuan</div>
        <div><br>
        </div>
        <div><br>
        </div>
        <div><br>
        </div>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      </div></div><pre>_______________________________________________
LLVM Developers mailing list
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><span class="HOEnZb"><font color="#888888">
</font></span></pre><span class="HOEnZb"><font color="#888888">
    </font></span></blockquote><span class="HOEnZb"><font color="#888888">
    <br>
    <br>
    <pre cols="72">-- 
John Criswell
Assistant Professor
Department of Computer Science, University of Rochester
<a href="http://www.cs.rochester.edu/u/criswell" target="_blank">http://www.cs.rochester.edu/u/criswell</a></pre>
  </font></span></div>

</blockquote></div><br></div>