<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 - LoopRotate compile-time regression due to MemorySSA"
href="https://bugs.llvm.org/show_bug.cgi?id=44889">44889</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>LoopRotate compile-time regression due to MemorySSA
</td>
</tr>
<tr>
<th>Product</th>
<td>libraries
</td>
</tr>
<tr>
<th>Version</th>
<td>10.0
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>Linux
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>enhancement
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>Scalar Optimizations
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>nikita.ppv@gmail.com
</td>
</tr>
<tr>
<th>CC</th>
<td>alina.sbirlea@gmail.com, llvm-bugs@lists.llvm.org
</td>
</tr>
<tr>
<th>Blocks</th>
<td>44555
</td>
</tr></table>
<p>
<div>
<pre>Created <span class=""><a href="attachment.cgi?id=23123" name="attach_23123" title="Large bitcode test case">attachment 23123</a> <a href="attachment.cgi?id=23123&action=edit" title="Large bitcode test case">[details]</a></span>
Large bitcode test case
Running the given test-case through opt -O3 gives the following timings for
loop rotation passes:
0.4672 ( 5.1%) 0.0079 ( 1.4%) 0.4751 ( 4.9%) 0.4750 ( 4.9%)
Rotate Loops #2
0.1104 ( 1.2%) 0.0052 ( 0.9%) 0.1156 ( 1.2%) 0.1155 ( 1.2%)
Rotate Loops
With with opt -O3 -enable-mssa-loop-dependency=0 we get:
0.0944 ( 0.9%) 0.0037 ( 0.7%) 0.0981 ( 0.9%) 0.0980 ( 0.9%)
Rotate Loops #2
0.0394 ( 0.4%) 0.0017 ( 0.3%) 0.0411 ( 0.4%) 0.0409 ( 0.4%)
Rotate Loops
That is, loop rotation has become 5x more expensive with MemorySSA enabled.
Presumably updating MemorySSA during loop rotation is very expensive.
This is one of the large compile-time regressions we've observed when trying to
upgrade to LLVM 10 in rust. You can see the full impact of enabling MemorySSA
(all else being equal) on end-to-end compile times at
<a href="https://perf.rust-lang.org/compare.html?start=9993408439c871c1bc0c0bac3b3008b24039443c&end=52e999afd3be3341463f3b87be02f2bcfb381c17">https://perf.rust-lang.org/compare.html?start=9993408439c871c1bc0c0bac3b3008b24039443c&end=52e999afd3be3341463f3b87be02f2bcfb381c17</a>.</pre>
</div>
</p>
<div id="referenced">
<hr style="border: 1px dashed #969696">
<b>Referenced Bugs:</b>
<ul>
<li>
[<a class="bz_bug_link
bz_status_CONFIRMED "
title="CONFIRMED - [meta] 10.0.0 Release Blockers"
href="https://bugs.llvm.org/show_bug.cgi?id=44555">Bug 44555</a>] [meta] 10.0.0 Release Blockers
</li>
</ul>
</div>
<br>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>