<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Commit e6251ad4caef causing huge regression in compile time"
   href="https://bugs.llvm.org/show_bug.cgi?id=48689">48689</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Commit e6251ad4caef causing huge regression in compile time
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>new-bugs
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>new bugs
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>douglas_yung@playstation.sony.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>htmldeveloper@gmail.com, llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>We have a large automatically generated test internally which a while back
started taking massively longer to compile. From the compiler time report, the
cause of the increase was the SLP Vectorizer pass which went from <0.5 seconds
to around 180 seconds which I bisected to commit e6251ad4caef.

The large test contains 1000 automatically generated test cases, and I did
several runs and calculated what % of the time was spent in the SLP Vectorizer
pass. When limiting the test to only 50 cases, the compiler only spent 3.6% of
the time in the SLP Vectorizer. At 200 test cases, it was up to 25%, 450 was
55%, up to 950 cases where we were spending roughly 71% of the compilation time
in the SLP Vectorizer.

It was suggested that perhaps we can be smarter about when we run the SLP
Vectorizer pass in order to avoid this huge compile time regression. Possibly
by only making the call to verifyFunction run at the end of or after the
BoUpSLP destructor, so we only need to make it so that it only runs when a
change has been made. This could be achieved by passing "changed" into BoUpSLP,
or by calling it just after runImpl is called (in SLPVectorizer::runOnFunction
and SLPVectorizerPass::run).</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>