<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Looks like this causes some asan/msan crashes (or in some cases, test failure/miscompiles). I'll see if I can get a crash with debug+asserts enabled. In release mode, it's crashing during Machine InstCombiner/Live Variable Analysis for different repros.<div><br></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr"><strong>From: </strong>Florian Hahn via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>></span><br><strong>Date: </strong>Tue, May 7, 2019 at 9:45 AM<br><strong>To: </strong> <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>><br><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Author: fhahn<br>
Date: Tue May  7 09:47:27 2019<br>
New Revision: 360171<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=360171&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=360171&view=rev</a><br>
Log:<br>
[DAGCombiner] Avoid creating large tokenfactors in visitTokenFactor<br>
<br>
When simplifying TokenFactors, we potentially iterate over all<br>
operands of a large number of TokenFactors. This causes quadratic<br>
compile times in some cases and the large token factors cause additional<br>
scalability problems elsewhere.<br>
<br>
This patch adds some limits to the number of nodes explored for the<br>
cases mentioned above.<br>
<br>
Reviewers: niravd, spatel, craig.topper<br>
<br>
Reviewed By: niravd<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D61397" rel="noreferrer" target="_blank">https://reviews.llvm.org/D61397</a><br>
<br>
Modified:<br>
    llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp<br>
<br>
Modified: llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp?rev=360171&r1=360170&r2=360171&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp?rev=360171&r1=360170&r2=360171&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Tue May  7 09:47:27 2019<br>
@@ -1792,8 +1792,9 @@ SDValue DAGCombiner::visitTokenFactor(SD<br>
   TFs.push_back(N);<br>
<br>
   // Iterate through token factors.  The TFs grows when new token factors are<br>
-  // encountered.<br>
-  for (unsigned i = 0; i < TFs.size(); ++i) {<br>
+  // encountered. Limit number of nodes to inline, to avoid quadratic compile<br>
+  // times.<br>
+  for (unsigned i = 0; i < TFs.size() && Ops.size() <= 2048; ++i) {<br>
     SDNode *TF = TFs[i];<br>
<br>
     // Check each of the operands.<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>