<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:#000000"><span class=""><blockquote style="border-left:2px solid rgb(16,16,255);margin-left:5px;padding-left:5px;color:rgb(0,0,0);font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div><br></div><div>Note: GCC is at least 3x faster at computing post-dom than LLVM</div></div></div></div></blockquote></span>Why?</div></div></blockquote><div><br></div><div>It has a real edge structure, and so doing things like walking successors and predecessors in a row is *really* fast and easily predictable cache behavior.</div><div>LLVM has to walk use structures and look at stuff to walk predecessors, which is both slow and often cache unfriendly :(</div><div><br></div><div>When you time it on larger cases, it comes out to about 600ms vs 200ms.</div><div><br></div><div><br></div></div></div></div>