<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Here's the creduce + stack trace w/ a debug build:</div><div dir="ltr"><br><div><div><font face="monospace, monospace">$ cat /tmp/repro.c</font></div><div><font face="monospace, monospace">int a, b, *c, d, e;</font></div><div><font face="monospace, monospace">void f() {</font></div><div><font face="monospace, monospace">  int g;</font></div><div><font face="monospace, monospace">  for (;;) {</font></div><div><font face="monospace, monospace">    for (; e; e = b) {</font></div><div><font face="monospace, monospace">      c = g;</font></div><div><font face="monospace, monospace">      for (; c; c = d)</font></div><div><font face="monospace, monospace">        if (a) break;</font></div><div><font face="monospace, monospace">      if (c) break;</font></div><div><font face="monospace, monospace">    }</font></div><div><font face="monospace, monospace">  }</font></div><div><font face="monospace, monospace">}</font></div></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">$ clang -O1 -fexperimental-new-pass-manager -mllvm -enable-loop-simplifycfg-term-folding -c /tmp/repro.c<br></font></div><div><div><font face="monospace, monospace">clang-9: ~/src/llvm-project/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp:63: void llvm::DeleteDeadBlocks(SmallVectorImpl<llvm::BasicBlock *> &, llvm::DomTreeUpdater *): Assertion</font></div><div><font face="monospace, monospace">`Dead.count(Pred) && "All predecessors must be dead!"' failed.</font></div></div><div><font face="monospace, monospace">...</font></div><div><div><font face="monospace, monospace"> #9 0x00007f448da1723b llvm::DeleteDeadBlocks(llvm::SmallVectorImpl<llvm::BasicBlock*>&, llvm::DomTreeUpdater*) </font><span style="font-family:monospace,monospace">~/src</span><font face="monospace, monospace">/llvm-project/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp:62:</font></div><div><font face="monospace, monospace">5</font></div></div><div><font face="monospace, monospace"><div>#10 0x00007f448e5c67ab (anonymous namespace)::ConstantTerminatorFoldingImpl::deleteDeadLoopBlocks() ~/src/llvm-project/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp:415:5</div></font></div></div></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jan 22, 2019 at 9:43 AM Jordan Rupprecht <<a href="mailto:rupprecht@google.com">rupprecht@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">It looks like this is still causing crashes, so I've temporarily reverted this as <a href="https://reviews.llvm.org/rL351845" target="_blank">https://reviews.llvm.org/rL351845</a>. I hope to have a repro later today.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail-m_8733236417797050066gmail_attr">On Thu, Jan 17, 2019 at 9:01 PM Max Kazantsev via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<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: mkazantsev<br>
Date: Thu Jan 17 20:57:32 2019<br>
New Revision: 351520<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=351520&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=351520&view=rev</a><br>
Log:<br>
Re-enable terminator folding in LoopSimplifyCFG: underlying bugs fixed<br>
<br>
Modified:<br>
    llvm/trunk/lib/Transforms/Scalar/LoopSimplifyCFG.cpp<br>
<br>
Modified: llvm/trunk/lib/Transforms/Scalar/LoopSimplifyCFG.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopSimplifyCFG.cpp?rev=351520&r1=351519&r2=351520&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopSimplifyCFG.cpp?rev=351520&r1=351519&r2=351520&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Transforms/Scalar/LoopSimplifyCFG.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/Scalar/LoopSimplifyCFG.cpp Thu Jan 17 20:57:32 2019<br>
@@ -42,7 +42,7 @@ using namespace llvm;<br>
 #define DEBUG_TYPE "loop-simplifycfg"<br>
<br>
 static cl::opt<bool> EnableTermFolding("enable-loop-simplifycfg-term-folding",<br>
-                                       cl::init(false));<br>
+                                       cl::init(true));<br>
<br>
 STATISTIC(NumTerminatorsFolded,<br>
           "Number of terminators folded to unconditional branches");<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="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>
</blockquote></div>