<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">Dear Rigel,<br>
      <br>
      The current version of SAFECode for LLVM 3.2 does not currently
      use all the fancy optimizations developed in previous research
      (namely, Dhurjati's et. al.'s type-safe load/store check
      elimination optimization).  As a result, it is essentially
      Jones/Kelley.  The source code for the optimizations are still
      there; they simply aren't enabled.<br>
      <br>
      The reason for this is that we opted to make SAFECode a robust
      debugging tool first and then make its optimizations and soundness
      features robust later.  However, I graduated before we could make
      that code robust.<br>
      <br>
      If you want a production quality tool, I recommend Address
      Sanitizer.  If you want to use SAFECode and get the best speed out
      of it, be sure to use at least -O2 optimization or higher; using
      the SAFECode libLTO plugin may also help (though it may also hurt
      performance by making more checks complete).<br>
      <br>
      As an FYI, we have a Google Summer of Code student working on
      Baggy Bounds with Accurate Checking (an extension of Baggy Bounds
      Checking that can do accurate bounds checking by storing extra
      meta-data within the padding area).  When sufficiently robust,
      this should speed up SAFECode significantly.  The goal is to get
      infrastructure up and running which we will be using within my
      research group; I hope that it will also be useful to others.<br>
      <br>
      On a final note, while good run-time check techniques like Address
      Sanitizer and Baggy Bounds improve performance considerably, my
      hunch is that we won't get *really* good performance without
      aggressive inter-procedural compiler optimization.<br>
      <br>
      Regards,<br>
      <br>
      John Criswell<br>
      <br>
      On 6/20/16 1:51 AM, Rigel Gjomemo via llvm-dev wrote:<br>
    </div>
    <blockquote cite="mid:57679260.6040602@gmail.com" type="cite">Hello,
      <br>
      <br>
      I have been using Safecode to add bounds checks to some programs
      and am getting very high running times for those programs. In
      average, the slowdown is up by a factor of 30, sometimes even 90.
      Is there a way to improve on this?
      <br>
      <br>
      I have followed the instructions about installing and using the
      Link Time Optimizer on this page:
      <a class="moz-txt-link-freetext" href="http://safecode.cs.illinois.edu/docs/Install.html">http://safecode.cs.illinois.edu/docs/Install.html</a>
      <br>
      <br>
      Still, the runtime of the compiled files is about the same.
      <br>
      <br>
      Are there any additional instructions that I am missing? Any other
      options that may be needed?
      <br>
      <br>
      Thank you
      <br>
      Rigel
      <br>
      <br>
      _______________________________________________
      <br>
      LLVM Developers mailing list
      <br>
      <a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>
      <br>
      <a class="moz-txt-link-freetext" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
      <br>
    </blockquote>
    <br>
    <p><br>
    </p>
    <pre class="moz-signature" cols="72">-- 
John Criswell
Assistant Professor
Department of Computer Science, University of Rochester
<a class="moz-txt-link-freetext" href="http://www.cs.rochester.edu/u/criswell">http://www.cs.rochester.edu/u/criswell</a></pre>
  </body>
</html>