<html>
    <head>
      <base href="http://llvm.org/bugs/" />
    </head>
    <body><span class="vcard"><a class="email" href="mailto:chandlerc@gmail.com" title="Chandler Carruth <chandlerc@gmail.com>"> <span class="fn">Chandler Carruth</span></a>
</span> changed
              <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - LCSSA recomputed too many times"
   href="http://llvm.org/bugs/show_bug.cgi?id=2377">bug 2377</a>
        <br>
             <table border="1" cellspacing="0" cellpadding="8">
          <tr>
            <th>What</th>
            <th>Removed</th>
            <th>Added</th>
          </tr>

         <tr>
           <td style="text-align:right;">Status</td>
           <td>NEW
           </td>
           <td>RESOLVED
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">CC</td>
           <td>
                
           </td>
           <td>chandlerc@gmail.com
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">Resolution</td>
           <td>---
           </td>
           <td>FIXED
           </td>
         </tr></table>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - LCSSA recomputed too many times"
   href="http://llvm.org/bugs/show_bug.cgi?id=2377#c8">Comment # 8</a>
              on <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - LCSSA recomputed too many times"
   href="http://llvm.org/bugs/show_bug.cgi?id=2377">bug 2377</a>
              from <span class="vcard"><a class="email" href="mailto:chandlerc@gmail.com" title="Chandler Carruth <chandlerc@gmail.com>"> <span class="fn">Chandler Carruth</span></a>
</span></b>
        <pre>This was fixed by my recent work to restructure the loop optimizations in LLVM.

Now, both LoopSimplify and LCSSA are function passes that arrange all of the
loop nests in their "canonical" form. SCEV as an analysis doesn't disrupt this
and the loop pass manager doesn't have to be re-built which needlessly re-ran
these passes.

Also, LICM now preserves LCSSA which further reduces the re-runs.

Currently, we compute LCSSA only 3 times, twice in the CGSCC pipeline, and once
afterward for vectorization. This is minimal until we have a loop-instcombine
pass and thus only a single loop pass pipeline in the CGSCC pipeline.

There are still problems where LICM reforms LCSSA too often after mutating the
function body, but that should be tracked separately. There is nothing else to
do here w.r.t. the pass manager.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>