<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi llvm-dev!<div class=""><br class=""></div><div class="">Recently the old Optimization Remark emitter APIs have been replaced with a new API. </div><div class=""><br class=""></div><div class="">Whereas before you would have had to emit a remark using a call like </div><div class=""><br class=""></div><div class="">  `emitOptimizationRemark(Context, PassName, Function, DLoc, Msg)`</div><div class=""><br class=""></div><div class="">(and similar for missed and analysis remarks), there now exists a much more versatile api using </div><div class=""><br class=""></div><div class="">  `ORE->emit(OptimizationRemark(PassName, OptimizationName, Function) << "inlined " << NV("caller", Caller) << " into " << NV("callee", Callee));`</div><div class=""><br class=""></div><div class="">(where ORE is a per-function `OptimizationRemarkEmitter` object).</div><div class=""><br class=""></div><div class="">The newer API gives developers the ability to emit more complex objects into the optimization remark yaml, in such a way that they will still be printed nicely, and the extra metadata is available to optimization remark tools. </div><div class=""><br class=""></div><div class="">Migrating function passes is relatively easy, as can be seen here <a href="https://reviews.llvm.org/rL309497" class="">https://reviews.llvm.org/rL309497</a> in migrating PGOMemOPSizeOpt.cpp pass - there's a function pass that keeps an ORE around. Migrating module passes is slightly harder, as shown here: <a href="https://reviews.llvm.org/D35929" class="">https://reviews.llvm.org/rL309294</a></div><div class=""><br class=""></div><div class="">We have now finished migrating the in-tree LLVM passes that use the old API to the new API, and are about to remove the old API. This is a heads up for any out-of-tree passes using the old API that you should also update.</div><div class=""><br class=""></div><div class="">Sam</div><div class=""><div class="">
<div style="color: rgb(0, 0, 0); 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; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); 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; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); 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; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); 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; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); 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; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">--</div><div class="">Archibald Sam Elliott</div><div class=""><a href="mailto:ashe2@cs.washington.edu" class="">ashe2@cs.washington.edu</a></div><div class="">PhD Student, PLSE Group</div></div></div></div></div></div>
</div>

<br class=""></div></body></html>