<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
p.xmsonormal, li.xmsonormal, div.xmsonormal
        {mso-style-name:x_msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:2.0cm 42.5pt 2.0cm 3.0cm;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="RU" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:EN-US">Hi Roman,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:EN-US">As Alina has pointed out, we do MSSA update wrong in general in this patch. I’m going to prepare a fix in ~3 hours from now. I’ll send it to you for review when it’s ready.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:EN-US">--Max<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> rtereshin@apple.com <rtereshin@apple.com>
<br>
<b>Sent:</b> Thursday, February 21, 2019 2:41 PM<br>
<b>To:</b> Maxim Kazantsev <max.kazantsev@azul.com><br>
<b>Cc:</b> Alina Sbirlea <alina.sbirlea@gmail.com>; dberlin@dberlin.org; llvm-commits <llvm-commits@lists.llvm.org>; asbirlea@google.com<br>
<b>Subject:</b> Re: [llvm] r353911 - [LoopSimplifyCFG] Re-enable const branch folding by default<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Hi Max, <o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thank you for replying so quickly!<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I’ve applied the change locally and the original IR module I used to bugpoint the reproducer I’ve sent you earlier failed anyway, this time for a different reason.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">I can’t send the module as it is for IP reasons, but here’s another bugpoint from the same source (with some manual tidying up):<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">define void @main(i32* %a, i32* %b) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">entry:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  br label %for.body<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">for.body:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  %i = phi i32 [ 0, %entry ], [ %i.inc, %latch ]<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  br label %switch.bb<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">switch.bb:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  switch i2 1, label %default [<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    i2 1, label %case<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  ]<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">case:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  br label %latch<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">default:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  unreachable<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">latch:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  store i32 %i, i32* %a<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  store i32 %i, i32* %b<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  %i.inc = add nsw i32 %i, 1<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  %exitcond = icmp eq i32 %i.inc, 4<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  br i1 %exitcond, label %exit, label %for.body<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">exit:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  ret void<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">./bin/opt -loop-simplifycfg loop-simplifycfg-term-folding-AND-mssa-loop-dependency-2.ll -enable-mssa-loop-dependency=true -verify-memoryssa=true -enable-loop-simplifycfg-term-folding=true -S -o -<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Assertion failed: (dominates(MD, U) && "Memory Def does not dominate it's uses"), function verifyDomination, file ../lib/Analysis/MemorySSA.cpp, line 1912.<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">If I don’t apply <a href="https://reviews.llvm.org/rL354547">https://reviews.llvm.org/rL354547</a> it fails the same way the previous reproducer did, so I guess this test is strictly better. Sorry for overbugpointing the first time around!<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Roman<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><br>
<br>
<o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">On Feb 20, 2019, at 10:12 PM, Alina Sbirlea <<a href="mailto:alina.sbirlea@gmail.com">alina.sbirlea@gmail.com</a>> wrote:<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">Are you sure your update is complete?<br>
It should theoretically match the DT update, i.e. include insert edges not just the delete. All updates should be done together using the same list of updates used for DT, and an up to date DT (see MSSAU->applyUpdates(DTUpdates, DT)).<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Wed, Feb 20, 2019 at 9:53 PM Maxim Kazantsev via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<p class="xmsonormal"><span lang="EN-US">Should be fixed by <a href="https://reviews.llvm.org/rL354547" target="_blank">
https://reviews.llvm.org/rL354547</a> </span><o:p></o:p></p>
<p class="xmsonormal"><span lang="EN-US"> </span><o:p></o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="xmsonormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> Maxim Kazantsev
<br>
<b>Sent:</b> Thursday, February 21, 2019 11:49 AM<br>
<b>To:</b> '<a href="mailto:rtereshin@apple.com" target="_blank">rtereshin@apple.com</a>' <<a href="mailto:rtereshin@apple.com" target="_blank">rtereshin@apple.com</a>><br>
<b>Cc:</b> llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>>;
<a href="mailto:dberlin@dberlin.org" target="_blank">dberlin@dberlin.org</a>; <a href="mailto:asbirlea@google.com" target="_blank">
asbirlea@google.com</a><br>
<b>Subject:</b> RE: [llvm] r353911 - [LoopSimplifyCFG] Re-enable const branch folding by default</span><o:p></o:p></p>
</div>
</div>
<p class="xmsonormal"> <o:p></o:p></p>
<p class="xmsonormal"><span lang="EN-US">Hi Roman,</span><o:p></o:p></p>
<p class="xmsonormal"><span lang="EN-US"> </span><o:p></o:p></p>
<p class="xmsonormal"><span lang="EN-US">Thanks for notification! I’ll fix it asap.</span><o:p></o:p></p>
<p class="xmsonormal"><span lang="EN-US"> </span><o:p></o:p></p>
<p class="xmsonormal"><span lang="EN-US">--Max</span><o:p></o:p></p>
<p class="xmsonormal"><span lang="EN-US"> </span><o:p></o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="xmsonormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> <a href="mailto:rtereshin@apple.com" target="_blank">
rtereshin@apple.com</a> <<a href="mailto:rtereshin@apple.com" target="_blank">rtereshin@apple.com</a>>
<br>
<b>Sent:</b> Thursday, February 21, 2019 10:25 AM<br>
<b>To:</b> Maxim Kazantsev <<a href="mailto:max.kazantsev@azul.com" target="_blank">max.kazantsev@azul.com</a>><br>
<b>Cc:</b> llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>>;
<a href="mailto:dberlin@dberlin.org" target="_blank">dberlin@dberlin.org</a>; <a href="mailto:asbirlea@google.com" target="_blank">
asbirlea@google.com</a><br>
<b>Subject:</b> Re: [llvm] r353911 - [LoopSimplifyCFG] Re-enable const branch folding by default</span><o:p></o:p></p>
</div>
</div>
<p class="xmsonormal"> <o:p></o:p></p>
<div>
<div>
<p class="xmsonormal" style="margin-bottom:12.0pt"><span style="font-size:10.0pt">Hi Max,<br>
<br>
Looks like this doesn’t collaborate with MemorySSA very well:<br>
<br>
./bin/opt -loop-simplifycfg loop-simplifycfg-term-folding-AND-mssa-loop-dependency.ll -enable-mssa-loop-dependency=true -verify-memoryssa=true -enable-loop-simplifycfg-term-folding=true -S -o -<br>
Assertion failed: (find(predecessors(&B), Phi->getIncomingBlock(I)) != pred_end(&B) && "Incoming phi block not a block predecessor"), function verifyDefUses, file ../lib/Analysis/MemorySSA.cpp, line 1947.<br>
<br>
The IR is:<br>
<br>
define void @main() {<br>
entry:<br>
  br label %for.body<br>
<br>
for.body:                                         ; preds = %exit, %entry<br>
  br label %<a href="http://switch.bb/" target="_blank">switch.bb</a><br>
<br>
<a href="http://switch.bb/" target="_blank">switch.bb</a>:                                        ; preds = %for.body<br>
  switch i2 1, label %<a href="http://default.bb/" target="_blank">default.bb</a> [<br>
    i2 1, label %<a href="http://case.bb/" target="_blank">case.bb</a><br>
  ]<br>
<br>
<a href="http://case.bb/" target="_blank">case.bb</a>:                                          ; preds = %switch<br>
  br label %exit<br>
<br>
<a href="http://default.bb/" target="_blank">default.bb</a>:                                       ; preds = %switch<br>
  unreachable<br>
<br>
exit:                                             ; preds = %<a href="http://case.bb/" target="_blank">case.bb</a><br>
  call void @foo()<br>
  br label %for.body<br>
}<br>
<br>
declare void @foo()<br>
<br>
<br>
Thanks,<br>
Roman</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="xmsonormal" style="margin-bottom:12.0pt"><span style="font-size:10.0pt"><br>
<br>
> On Feb 12, 2019, at 10:12 PM, Max Kazantsev via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br>
> <br>
> Author: mkazantsev<br>
> Date: Tue Feb 12 22:12:48 2019<br>
> New Revision: 353911<br>
> <br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=353911&view=rev" target="_blank">
http://llvm.org/viewvc/llvm-project?rev=353911&view=rev</a><br>
> Log:<br>
> [LoopSimplifyCFG] Re-enable const branch folding by default<br>
> <br>
> Known underlying bugs have been fixed, intensive fuzz testing did not<br>
> find any new problems. Re-enabling by default. Feel free to revert if<br>
> it causes any functional failures.<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=353911&r1=353910&r2=353911&view=diff" target="_blank">
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopSimplifyCFG.cpp?rev=353911&r1=353910&r2=353911&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/lib/Transforms/Scalar/LoopSimplifyCFG.cpp (original)<br>
> +++ llvm/trunk/lib/Transforms/Scalar/LoopSimplifyCFG.cpp Tue Feb 12 22:12:48 2019<br>
> @@ -41,7 +41,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="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" target="_blank">
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a></span><o:p></o:p></p>
</div>
</div>
</div>
</div>
<p class="MsoNormal">_______________________________________________<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" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><o:p></o:p></p>
</blockquote>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</body>
</html>