<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">I think optimization remarks is a good framework for measuring whether a Pass does any work.<div class="">But unfortunately it is not widely adopted by Passes outside loop transformations. And even for the Passes that use it, my impression was that not every predicates are annotated with optimization remarks.</div><div class=""><br class=""></div><div class="">-Min<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On May 24, 2021, at 12:55 PM, Stefanos Baziotis 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 dir="ltr" class="">Hi,<div class=""><br class=""></div><div class="">Has anyone gathered statistics on reference workloads (*) for (transformation) passes</div><div class="">that are enabled / run by default (e.g., -O3) but most of the</div><div class="">time _don't_ do any effective transformation?</div><div class="">Even better if we also have such statistics for passes that are _not_ enabled by default</div><div class="">(e.g., loop fusion, distribution, interchange, NewGVN).</div><div class=""><br class=""></div><div class="">And yet even better if people have some idea / data for the reason for ineffectiveness.</div><div class="">Bad heuristics / decision-making? Are some of these transformations useless most of the time?</div><div class="">Or maybe they are useful but their implementation in LLVM is not powerful enough. Or maybe</div><div class="">they incur a significant compile-time overhead.</div><div class=""><br class=""></div><div class="">If not, it would also be helpful if anyone who has tried gathering similar statistics has any</div><div class="">advice on how to approach it (my rough idea is initially</div><div class="">use --print-changed / --print-after-all on these workloads for -O3 and then try to</div><div class="">slide in passes that are not enabled by default; although that's harder to do it right).</div><div class=""><br class=""></div><div class="">@Hideto: In the last LLVM meeting you gave a related talk [1]. Do you maybe have<br class=""></div><div class="">the full statistics and / or ways to reproduce them?</div><div class=""><br class=""></div><div class="">Best,</div><div class="">Stefanos</div><div class=""><br class=""></div><div class="">(*) SPEC, Polybench, Cryptographic libraries, Genome alignment, Image Processing, Graph Processing, Web browsers, databases like sqlite etc.</div><div class=""><br class=""></div><div class="">[1] <a href="https://www.youtube.com/watch?v=QvF68tOt_w8" class="">https://www.youtube.com/watch?v=QvF68tOt_w8</a></div></div>
_______________________________________________<br class="">LLVM Developers mailing list<br class=""><a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a><br class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev<br class=""></div></blockquote></div><br class=""></div></body></html>