<div class="gmail_quote">On Fri, Jun 8, 2012 at 3:04 PM, Peter Cooper <span dir="ltr"><<a href="mailto:peter_cooper@apple.com" target="_blank">peter_cooper@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word"><br><div><div class="im"><div>On Jun 8, 2012, at 3:00 PM, Chandler Carruth wrote:</div><br><blockquote type="cite"><div class="gmail_quote">On Fri, Jun 8, 2012 at 10:47 AM, Peter Cooper <span dir="ltr"><<a href="mailto:peter_cooper@apple.com" target="_blank">peter_cooper@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi all<br>
<br>
Attached is a pass to make the SimplifyCFGPass preserve the dominator tree.  Currently we see lots of recalculations of the dom tree right after simplify cfg runs, regardless of whether simplify cfg actually did anything.<br>


<br>
This pass explicitly recalculates the dom tree if simplify cfg did anything, but otherwise just leaves it preserved so we recalculate less often.<br>
<br>
Also, i'm open to suggestions for a better way to do this.  Ideally the pass manager could track this but not all passes return true from their run functions when they actually make a change.</blockquote><div><br></div>

<div>Can we just go fix these passes and then teach the pass manager to preserve analyses across passes that claim they didn't change anything? There aren't *that* many optimization passes.</div></div></blockquote>
</div>Yeah, that would be possible.  Like you say, there aren't that many passes.  As I just replied to John, passes like simplify lib calls need fixed but its trivial to see how its return value would need to be fixed.</div>
</div></blockquote><div><br></div><div>The fact that the semantic impact of the return is being ignored by passes is pretty annoying.</div><div><br></div><div>I'm quite tempted to suggest a basic check-summing system that can be run like the verifier before and after a pass by the pass manager to assert that in fact the pass didn't modify stuff.... Bit of a yak shave, but maybe something to leave FIXMEs or comments about. It would be good to have the pass manager enforce this eventually.</div>
</div>