<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    <div class="moz-cite-prefix">On 02/07/2014 11:45 AM, Chandler
      Carruth wrote:<br>
    </div>
    <blockquote
cite="mid:CAGCO0Kiuah3mO2vtLCC8gOJP79sXBx=9T8k1wz-329WYg0cy7Q@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra"><br>
          <div class="gmail_quote">On Fri, Feb 7, 2014 at 11:29 AM,
            Chris Lattner <span dir="ltr"><<a moz-do-not-send="true"
                href="mailto:clattner@apple.com" target="_blank">clattner@apple.com</a>></span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div class="">On Feb 1, 2014, at 4:33 AM, Chandler Carruth
                <<a moz-do-not-send="true"
                  href="mailto:chandlerc@gmail.com">chandlerc@gmail.com</a>>
                wrote:<br>
                <br>
                > So, there are two primary ideas behind SSA form
                management in the loop optimizers of LLVM:<br>
                ><br>
                > - Require LCSSA form input, leverage its (very
                powerful) guarantees to simplify maintaining SSA form,
                and also maintain LCSSA form.<br>
                ><br>
                > - Don't bother with LCSSA form input, assume the
                worst, and use powerful incremental SSA formation
                utilities built on SSAUpdater to form SSA on demand when
                needed.<br>
                ><br>
                > (Note, there are plenty of places where SSAUpdater
                makes sense, so this isn't really about doing away with
                it at all.)<br>
                <br>
              </div>
              It’s worth noting that LCSSA predates SSAUpdater.  If I
              went back in time and knew what I knew now, I wouldn’t
              have gone with LCSSA.<br>
              <br>
              My gripes are three fold: </blockquote>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">1)
              SSAUpdater can handle anything that LCSSA simplifies</blockquote>
            <div><br>
            </div>
            <div>Yes, it can, but it is *significantly* less simple. I
              think the simplicity of reasoning and handling things with
              LCSSA is not without value.<br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    I strongly agree with this.  I recently looked at using LCSSA vs
    SSAUpdater for an out-of-tree pass I'm working on and quickly
    settled on LCSSA due to its simplicity.  I may revisit that decision
    someday if performance proves problematic, but for initial
    prototyping, LCSSA was a major win.<br>
    <br>
    Part of that is that I never really found clear documentation on
    what SSAUpdater actually did and how to use it.  There's some
    documentation in the header, but it's not exactly obvious on first
    read.<br>
    <br>
    Philip<br>
    <br>
    <br>
  </body>
</html>