<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">On 6/30/2017 11:38 AM, Balaram Makam
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:01a201d2f1d0$06e72970$14b57c50$@codeaurora.org">
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
<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;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
color:black;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0in;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier New";
color:black;}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:Consolas;
color:black;}
p.msonormal0, li.msonormal0, div.msonormal0
{mso-style-name:msonormal;
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:12.0pt;
font-family:"Times New Roman",serif;
color:black;}
span.EmailStyle20
{mso-style-type:personal;
font-family:"Calibri",sans-serif;
color:windowtext;}
span.EmailStyle21
{mso-style-type:personal;
font-family:"Calibri",sans-serif;
color:windowtext;}
span.EmailStyle22
{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:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
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]-->
<div class="WordSection1">
<p class="MsoNormal"><span style="color:windowtext">Thanks Eli,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:windowtext"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:windowtext">I was
looking at this code which keeps track of loop headers but
is checking if the destination of branch is a loop header
sufficient? This prevents merging empty preheaders into the
loop headers as well.</span></p>
</div>
</blockquote>
<br>
There isn't really any reason to collapse preheaders anyway;
LoopSimplify will recreate them, and they don't really block other
optimizations as far as I know.<br>
<br>
<blockquote type="cite"
cite="mid:01a201d2f1d0$06e72970$14b57c50$@codeaurora.org">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:windowtext">Is that
reasonable approach or do we need to skip only if the
original unconditional branch was a backedge and folding
this branch might result in additional backedges? I made a
quick hack to find the function backedges and skip
simplifycfg to merge the latch block into the loop header
when it results in an additional backedge. Although it
solves my purpose I am not sure if this the right approach,
as finding the backedges looks expensive.</span></p>
</div>
</blockquote>
<br>
Well, not that expensive to calculate if you cache it, but probably
tricky to keep the cache up-to-date, yes.<br>
<br>
<blockquote type="cite"
cite="mid:01a201d2f1d0$06e72970$14b57c50$@codeaurora.org">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:windowtext">I also found
a regression with this patch where a huge switch statement
with multiple empty blocks have been skipped from merging
resulting in bad code. Instead, should loopsimplify try to
unify multiple exit blocks and collapse multiple backedges
whenever possible instead of splitting it out into a nested
loop?</span></p>
</div>
</blockquote>
<br>
I'm not sure I follow the issue here. Could you give an example?<br>
<br>
-Eli<br>
<br>
<pre class="moz-signature" cols="72">--
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project</pre>
</body>
</html>