<div dir="ltr"><div>Hello John,<br><br>According to the FAQ, I can submit two proposals although at most one of them can be accepted.<br>Thus I will prepare a proposal for each of the two projects.<br><br>And, after reading the code of cfl-aa and several related papers, I've listed four milestones for the AA project: <br><br>1) In order to use the fast algorithm described in PLDI'13 [1], cfl-aa makes a simplification on the CFL defined in POPL'08 [2], which will lead to a reduction on precision (I've confirmed this observation with the author).<br>Thus a quantitative measurement on how much is the reduction is needed.<br><br>2) In cfl-aa, different fields of a same struct and the whole array are represented by a single node.<br>This is the reason of the problem 2, 4 listed in <a href="http://llvm.org/OpenProjects.html">http://llvm.org/OpenProjects.html</a>.<br>We should split these large nodes.<br><br>3) Handling special global variables, such as errno.<br><br>4) It seems that the current version of cfl-aa is an intraprocedural analysis.<br>If the time is enough, I think we may extend it to an interprocedural analysis.<br>The algorithm described in [3] can be applied to scaling it.<br><br>As for the bloat-detection project, the final result should be a tool that is verified by known bugs and a set of newly detected bugs.<br><br>Do you have any suggestions on these objectives?<br><br>Thanks!<br><br><br></div>[1] Fast Algorithms for Dyck-CFL-Reachability with Applications to Alias Analysis. PLDI'13<br><div>[2] Demand-Driven Alias Analysis for C. POPL'08<br>[3] Demand-Driven Context-Sensitive Alias Analysis for Java. ISSTA'11<br><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 5 March 2015 at 09:58, Mingxing Zhang <span dir="ltr"><<a href="mailto:james0zan@gmail.com" target="_blank">james0zan@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 dir="ltr"><div><div>Wow, that is cool!<br></div>I'll check about it.<br><br></div>Thank you!<br></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On 4 March 2015 at 21:57, 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 text="#000000" bgcolor="#FFFFFF"><span>
    <div>On 3/4/15 2:18 AM, Mingxing Zhang
      wrote:<br>
    </div>
    <blockquote type="cite">
      
      <div dir="ltr">Hello John,<br>
        <br>
        Thank you for your advices and congratulations~<br>
        <br>
        I'll read the code of cfl-aa and Giri first and make the
        decision of which project to pursue.<br>
        The choice will be reported to this thread once I made the
        determination (hopefully within this week).<br>
      </div>
    </blockquote>
    <br></span>
    You should check for yourself, but I don't think anything prevents
    you from submitting two proposals.  If you have time to write two
    strong proposals, I see no problem with that.<br>
    <br>
    Just make sure that any proposal you write is strong: it provides a
    concrete explanation of what you want to do, some justification for
    why it would benefit the community (short or long term), and why
    you're the person qualified to do it.  Proposals should also include
    a set of milestones and expected dates for completing those
    milestones.<br>
    <br>
    Regards,<br>
    <br>
    John Criswell<div><div><br>
    <br>
    <blockquote type="cite">
      <div dir="ltr"><br>
        Thanks!<br>
        <br>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On 3 March 2015 at 23:12, John Criswell
          <span dir="ltr"><<a href="mailto:jtcriswel@gmail.com" target="_blank">jtcriswel@gmail.com</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote">
            <div>
              <div>Dear Mingxing,<br>
                <br>
                I think both projects are interesting and useful.<br>
                <br>
                Points-to analysis is something that is needed by
                research users of LLVM, but to the best of my knowledge,
                no solid implementation currently exists (although the
                cfl-aa work being done at Google may provide us with
                something; you should check into it before writing a
                proposal).  My interest is in a points-to analysis that
                is robust and is useful to both research and industry
                users of LLVM.  A points-to analysis proposal must
                indicate how it will help both of these subsets of the
                LLVM community, and it must argue why current efforts do
                not meet the requirements of both subsets of the
                community.<br>
                <br>
                The runtime bloat tool also looks interesting, and your
                approach (at least to me) is interesting.  One question
                in my mind, though, is whether dynamic slicing is going
                to work well.  Swarup Sahoo and I built a dynamic slicer
                for LLVM named Giri, and we found the tracing required
                for dynamic slicing to be slow.  For our purposes, the
                overhead was okay as we only needed to record execution
                until a crash (which happened quickly).  In your bloat
                tool, the program will probably run for awhile, creating
                a long trace record.  You should take a look at the Giri
                code, use it to trace some programs, and see if the
                overheads are going to be tolerable.  If they are not,
                then your first task would be to optimize Giri for your
                bloat tool.<br>
                <br>
                You should also be more specific about which LLVM
                instructions will be traced.  For example, I wouldn't
                record the outputs of every LLVM instruction; I might
                only record the outputs of loads and stores or the end
                of a def-use chain.<br>
                <br>
                I'd be interested in mentoring either project.<br>
                <br>
                BTW, it looks like your FSE paper won an award. 
                Congrats.<br>
                <br>
                Regards,<br>
                <br>
                John Criswell
                <div>
                  <div><br>
                    <br>
                    <br>
                    <br>
                    <br>
                    <br>
                    <br>
                    On 3/3/15 2:30 AM, Mingxing Zhang wrote:<br>
                  </div>
                </div>
              </div>
              <blockquote type="cite">
                <div>
                  <div>
                    <div dir="ltr">Hi all,<br>
                      <br>
                      As a Ph.D. student majored in Software
                      Reliability, I have used LLVM in many of my
                      projects, such as the Anticipating Invariant (<a href="http://james0zan.github.io/AI.html" target="_blank">http://james0zan.github.io/AI.html</a>)
                      and some other undergoing ones.<br>
                      Thus, it would be a great pleasure for me if I
                      could take this opportunity to contribute to this
                      awesome project.<br>
                      <br>
                      After reading the idea list (<a href="http://llvm.org/OpenProjects.html" target="_blank">http://llvm.org/OpenProjects.html</a>),

                      I was most interested in the idea of improving the
                      "Pointer and Alias Analysis" passes.<br>
                      Could you please give me some more tips or advices
                      on how to get started on working on the
                      application?<br>
                      <br>
                      Simultaneously, I also have another idea about
                      using LLVM to detect runtime bloat, just like the
                      ThreadSanitizer tool for data races.<br>
                      If there is anyone here who would like to mentor
                      this project, could you please find some time to
                      review the <a href="https://gist.github.com/james0zan/d03737c60b10d0d11d34" target="_blank">more detailed proposal on gist</a>
                      and give me some feedbacks?<br>
                      <br>
                      P.S. <br>
                        I do prefer the bloat detection tool, but I'm
                      not sure about whether it is suitable for GSoC.<br>
                        Thus I will apply for the Alias Analysis one if
                      it is not suitable.<br>
                      <br>
                      Thanks!<br>
                      <br>
                      -- <br>
                      <div>
                        <div dir="ltr">
                          <div>
                            <div dir="ltr">
                              <div>Mingxing Zhang
                                <div><br>
                                </div>
                                <div>Tel.: <a href="tel:%2B86-10-62797143" value="+861062797143" target="_blank">+86-10-62797143</a><br>
                                </div>
                                <div>Web: <a href="http://james0zan.github.io/" target="_blank">http://james0zan.github.io/</a><br>
                                </div>
                                <div>Addr: Room 3-122, FIT Building,
                                  Tsinghua University, Beijing 100084,
                                  China</div>
                              </div>
                            </div>
                          </div>
                        </div>
                      </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>
</pre>
              </blockquote>
              /<span><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>
              </span></div>
          </blockquote>
        </div>
        <br>
        <br>
        <br>
        -- <br>
        <div>
          <div dir="ltr">
            <div>
              <div dir="ltr">
                <div>Mingxing Zhang
                  <div><br>
                  </div>
                  <div>Tel.: <a href="tel:%2B86-10-62797143" value="+861062797143" target="_blank">+86-10-62797143</a><br>
                  </div>
                  <div>Web: <a href="http://james0zan.github.io/" target="_blank">http://james0zan.github.io/</a><br>
                  </div>
                  <div>Addr: Room 3-122, FIT Building, Tsinghua
                    University, Beijing 100084, China</div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <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>
  </div></div></div>

</blockquote></div><br><br clear="all"><br>-- <br><div><div dir="ltr"><div><div dir="ltr"><div>Mingxing Zhang<div><br></div><div>Tel.: <a href="tel:%2B86-10-62797143" value="+861062797143" target="_blank">+86-10-62797143</a><br></div><div>Web: <a href="http://james0zan.github.io/" target="_blank">http://james0zan.github.io/</a><br></div><div>Addr: Room 3-122, FIT Building, Tsinghua University, Beijing 100084, China</div></div></div></div></div></div>
</div>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>Mingxing Zhang<div><br></div><div>Tel.: +86-10-62797143<br></div><div>Web: <a href="http://james0zan.github.io/" target="_blank">http://james0zan.github.io/</a><br></div><div>Addr: Room 3-122, FIT Building, Tsinghua University, Beijing 100084, China</div></div></div></div></div></div>
</div>