<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p><br>
</p>
<div class="moz-cite-prefix">On 10/25/2017 12:16 PM, Xinliang David
Li via llvm-dev wrote:<br>
</div>
<blockquote
cite="mid:CALRgJCPo2MSyh1sv3YROi-odjxhfJ=w5rCXKM5=86xdkc0jSrw@mail.gmail.com"
type="cite">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<div dir="ltr"><br>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Tue, Oct 17, 2017 at 11:50 PM,
Chandler Carruth via llvm-dev <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Greetings everyone!
<div><br>
</div>
<div>The new pass manager is getting extremely close to
the point where I'm not aware of any significant
outstanding work needed, and I'd like to see what else
would be needed to enable it by default. Here are the
current functionality I'm aware of outstanding:</div>
<div><br>
</div>
<div>1) Does not do non-trivial loop unswitching.
Majority of this is in <a moz-do-not-send="true"
href="https://reviews.llvm.org/D34200"
target="_blank">https://reviews.llvm.org/<wbr>D34200</a> but
will need one or two small follow-ups.</div>
<div><br>
</div>
<div>2) Currently, sanitizers don't work correctly with
it. Thanks to the work of others, the missing
infrastructure has been added and I'll send a patch to
wire this up this week.</div>
<div><br>
</div>
<div>3) Missing support for 'optnone'. I've been working
on this, but the existing testing wasn't as thorough
as I wanted, so it is going slowly. I've got about 1/4
of this implemented and should have patches this week
or next.</div>
<div><br>
</div>
<div>4) Missing opt-bisect (or similar) facility. This
looks pretty trivial to add, but I've not even
started. If anyone is interested in it, go for it. We
might even be able to do something simpler using the
generic debug counters and get equivalent
functionality.</div>
<div><br>
</div>
<div>... that's it?</div>
</div>
</blockquote>
<div><br>
</div>
<div><br>
</div>
<div>Missing support of 'print-after-all' or
'print-after-passX' is another major usability loss.</div>
<div><br>
</div>
<div>Regarding the default switch, maybe do it in two
steps: </div>
<div><br>
</div>
<div>1) Switch the default for PGO build first</div>
<div>2) Switch the default for all modes.</div>
</div>
</div>
</div>
</blockquote>
<br>
Why?<br>
<br>
-Hal<br>
<br>
<blockquote
cite="mid:CALRgJCPo2MSyh1sv3YROi-odjxhfJ=w5rCXKM5=86xdkc0jSrw@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div><br>
</div>
<div>David</div>
<div><br>
</div>
<div><br>
</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div><br>
</div>
<div>Optimization quality / run-time performance:</div>
<div>- We've been using it at Google extensively and are
very happy with the optimization quality. Benchmarks
look *very* good here.</div>
<div>- More data from other users would be important.</div>
<div>- You can try it out with `-fexperimental-new-pass-<wbr>manager`
to Clang</div>
<div><br>
</div>
<div>Compile-time performance:</div>
<div>- Sometimes *much* better due to cached analyses.</div>
<div>- Sometimes worse, typically due to more /
different inlining in turn running main pipeline
(GVN + InstCombine) more times or over more code.</div>
<div>- Overall somewhat a wash, but the increased
compile times typically due to the optimizer "trying"
harder, so not too concerning on our end.</div>
<div>- Again, more feedback from other users good:
`-fexperimental-new-pass-<wbr>manager` to Clang</div>
<div><br>
</div>
<div>Once the four missing things land, I'll also
happily work on collecting some of the basics on the
test-suite and CTMark. But I suspect more "in the
wild" data would really be useful here given the
significance of the change.</div>
<div><br>
</div>
<div>Thoughts? What else (beyond the four items above
and feedback on run-time and compile-time) would folks
like to see?</div>
<div><br>
</div>
<div>Once this happens, I'll also be preparing some
batch, mechanical updates to the test suite to
primarily use the new pass manager. Also there is lots
of documentation updates that will be needed here.</div>
<span class="HOEnZb"><font color="#888888">
<div><br>
</div>
<div>-Chandler</div>
</font></span>
<div><br>
</div>
<div>PS: I'll be sending a note to cfe-dev as a "heads
up" about this discussion as in some ways, the default
flip is mostly a Clang default flip. But hopefully our
doc updates will trigger this being "perceived" as the
default for other frontends, and I'll try to reach out
to other major frontends as well (Swift and Rust are
on my radar, and I've already started talking with
Philip Reames about their Falcon JIT).</div>
</div>
<br>
______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a moz-do-not-send="true"
href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a moz-do-not-send="true"
href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev"
rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
<br>
</blockquote>
</div>
<br>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
LLVM Developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
</pre>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory</pre>
</body>
</html>