<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi David,<div class=""><br class=""></div><div class="">Feel free to add me as a reviewer (mehdi_amini on Phabricator). I’ll do my best to help with it.</div><div class=""><br class=""></div><div class="">—</div><div class="">Mehdi</div><div class=""><br class=""></div><div class=""><div><blockquote type="cite" class=""><div class="">On Aug 1, 2016, at 10:45 AM, David Callahan via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div style="font-family: Calibri, sans-serif; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: Cambria;" class="">I have a rewrite of the aggressive dead code elimination pass which handles control flow and allows may-be-infinite loops to be removed under optional flag. Chandler suggested rather than a large change a series of small changes and, while that may not get us to small changes easily, there has been no further commentary on the diff:<span class="Apple-converted-space"> </span><a href="https://reviews.llvm.org/D18762" style="color: purple; text-decoration: underline;" class="">https://reviews.llvm.org/D18762</a>.  Given that, I will plan on proposing a series of diffs and would like to recruit some people who are interested in the change to help review those changes.<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: Cambria;" class=""><o:p class=""> </o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: Cambria;" class="">I expect to stage as follows:<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: Cambria;" class=""><o:p class=""> </o:p></div><div style="margin: 0in 0in 0.0001pt 0.5in; font-size: 12pt; font-family: Cambria; text-indent: -0.25in;" class="">1.<span style="font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">    <span class="Apple-converted-space"> </span></span>Rewrite base algorithm to introduce data structures needed to hold extra information (no functional change)<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt 0.5in; font-size: 12pt; font-family: Cambria; text-indent: -0.25in;" class="">2.<span style="font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">    <span class="Apple-converted-space"> </span></span>Rewrite base algorithm to allow removing of control flow (under option, off by default). This variant will not be correct in the general case.<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt 0.5in; font-size: 12pt; font-family: Cambria; text-indent: -0.25in;" class="">3.<span style="font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">    <span class="Apple-converted-space"> </span></span>Code to rewrite the control flow graph and remove dead basic blocks<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt 0.5in; font-size: 12pt; font-family: Cambria; text-indent: -0.25in;" class="">4.<span style="font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">    <span class="Apple-converted-space"> </span></span>Identify Phi nodes with non-instruction reaching definitions and keep the associated source block live. Identify Phi nodes with multiple-live values from dead blocks<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt 0.5in; font-size: 12pt; font-family: Cambria; text-indent: -0.25in;" class="">5.<span style="font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">    <span class="Apple-converted-space"> </span></span>Remove unreachable code discovered by post-order traversal to avoid.<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt 0.25in; font-size: 12pt; font-family: Cambria; text-indent: 0.25in;" class=""> (code is functionally correct at this point)<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt 0.5in; font-size: 12pt; font-family: Cambria; text-indent: -0.25in;" class="">6.<span style="font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">    <span class="Apple-converted-space"> </span></span>Use post-order traversal to identify loop bottoms. By default this will be kept live but include switch to allow loops to be removed. <o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt 0.5in; font-size: 12pt; font-family: Cambria; text-indent: -0.25in;" class="">7.<span style="font-size: 7pt; line-height: normal; font-family: 'Times New Roman';" class="">    <span class="Apple-converted-space"> </span></span>Improve handling of live values out of dead regions<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: Cambria;" class=""><o:p class=""> </o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: Cambria;" class="">Please respond if you are willing to help or have suggestions on staging or approach.<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: Cambria;" class=""><o:p class=""> </o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: Cambria;" class="">Thanks<o:p class=""></o:p></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: Cambria;" class="">David<o:p class=""></o:p></div></div><span style="font-family: Calibri, sans-serif; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">_______________________________________________</span><br style="font-family: Calibri, sans-serif; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Calibri, sans-serif; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">LLVM Developers mailing list</span><br style="font-family: Calibri, sans-serif; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="mailto:llvm-dev@lists.llvm.org" style="color: purple; text-decoration: underline; font-family: Calibri, sans-serif; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">llvm-dev@lists.llvm.org</a><br style="font-family: Calibri, sans-serif; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" style="color: purple; text-decoration: underline; font-family: Calibri, sans-serif; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a></div></blockquote></div><br class=""></div></body></html>