<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:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",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;}
span.apple-converted-space
        {mso-style-name:apple-converted-space;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.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]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Zhaoshi gave your patch a LGTM.  Go for it.  Thanks, Pete.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'>From:</span></b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'> Pete Cooper [mailto:peter_cooper@apple.com] <br><b>Sent:</b> Wednesday, April 22, 2015 1:04 PM<br><b>To:</b> mcrosier@codeaurora.org<br><b>Cc:</b> zhaoshiz@codeaurora.org; apazos@codeaurora.org; Tim Northover; Jiangning Liu; sdmitrouk@accesssoftek.com; llvm-commits<br><b>Subject:</b> Re: [PATCH] Check Dest Register Liveness using MRI in CondOpt pass<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><div><p class=MsoNormal>On Apr 22, 2015, at 8:04 AM, Chad Rosier <<a href="mailto:mcrosier@codeaurora.org">mcrosier@codeaurora.org</a>> wrote:<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Pete,</span><o:p></o:p></p></div><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>I’ve pinged Zhaoshi and Ana using our internal emails.  Hopefully, they can provide some feedback shortly.</span><o:p></o:p></p></div></div></blockquote><p class=MsoNormal>Thanks Chad.  Sounds good.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Pete<br><br><o:p></o:p></p><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><div><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'> </span><o:p></o:p></p></div><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Chad</span><o:p></o:p></p></div><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'> </span><o:p></o:p></p></div><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'><b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'>From:</span></b><span class=apple-converted-space><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'> </span></span><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'>Pete Cooper [<a href="mailto:peter_cooper@apple.com">mailto:peter_cooper@apple.com</a>]<span class=apple-converted-space> </span><br><b>Sent:</b><span class=apple-converted-space> </span>Tuesday, April 21, 2015 6:51 PM<br><b>To:</b><span class=apple-converted-space> </span><a href="mailto:mcrosier@codeaurora.org">mcrosier@codeaurora.org</a><br><b>Cc:</b><span class=apple-converted-space> </span><a href="mailto:zhaoshiz@codeaurora.org">zhaoshiz@codeaurora.org</a>; <a href="mailto:apazos@codeaurora.org">apazos@codeaurora.org</a>; Tim Northover; Jiangning Liu; <a href="mailto:sdmitrouk@accesssoftek.com">sdmitrouk@accesssoftek.com</a>; llvm-commits<br><b>Subject:</b><span class=apple-converted-space> </span>[PATCH] Check Dest Register Liveness using MRI in CondOpt pass</span><o:p></o:p></p></div></div></div><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'>Hi Chad<o:p></o:p></p></div><div><div><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'> <o:p></o:p></p></div></div><div><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'><a href="http://reviews.llvm.org/D6048"><span style='color:purple'>http://reviews.llvm.org/D6048</span></a> (everyone CCed here was CCed on it) added register liveness checking to the CondOpt pass.  It does this with<o:p></o:p></p></div></div><div><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'> <o:p></o:p></p></div></div><blockquote style='margin-left:30.0pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt'><div><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'>if (I->getOperand(0).isDead())<o:p></o:p></p></div></div></blockquote><div><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'> <o:p></o:p></p></div></div><div><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'>However, this requires that some kind of liveness has been run beforehand, so the pass had to require live intervals.  Looking at the pass manager dump, we then invalidated live intervals shortly after CondOpt because other passes don’t preserve it.<o:p></o:p></p></div></div><div><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'> <o:p></o:p></p></div></div><div><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'>Attached is a patch which removes the dependency on LiveIntervals by checking if the def has any uses.  If it has no uses then it was going to be marked dead anyway, so this is equivalent to your original code.  I’ve verified that this passes ‘make check’ and specifically stepped through the examples in combine-comparisons-by-cse.ll in lldb to ensure the behavior was the same.<o:p></o:p></p></div></div><div><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'> <o:p></o:p></p></div></div><div><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'>When building a bitcode containing all of llc with/without this change, it results in one less run of LiveIntervals per MF and saves 4s out of 80s total compile time.<o:p></o:p></p></div></div><div><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'> <o:p></o:p></p></div></div><div><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'>Thanks,<o:p></o:p></p></div></div><div><div><p class=MsoNormal style='mso-line-height-alt:10.5pt'>Pete<o:p></o:p></p></div></div></div></div></blockquote></div><p class=MsoNormal><o:p> </o:p></p></div></body></html>