<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">On Apr 13, 2017, at 8:27 PM, Daniel Berlin via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>> wrote:<br class=""><div><blockquote type="cite" class="">Out of 35% InstCombine time, about half is spent in the top 5 visitor routines.<br class=""><div class=""><div dir="ltr" class=""><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">
<br class="">
I wanted to see what transformations InstCombine actually performs. Using -debug option turned out not to be very scalable. Never mind the large output size of the trace, running "opt -debug -instcombineā€¯</blockquote><div class=""><br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> on anything other than a small IR is excruciatingly slow. Out of curiosity I profiled it too: 96% of the time is spent decoding and printing instructions. Is this a known problem?</blockquote><div class=""><br class=""></div><div class="">Yes</div><div class=""><br class=""></div><div class="">The problem is *every* value print call builds an assembly writer, which  calls the module typefinder to be able to print the types.  This walks everything in the module to find the types.</div><div class="">For large ir with a lot of types, this is *ridiculously* slow.</div><div class=""><br class=""></div><div class="">IE it's basically processing a large part of the module for *every operand* it prints.</div><div class=""><br class=""></div><div class="">You can, for something like what you are doing, just hack it up to build it once or not at all.</div><div class=""><br class=""></div><div class="">I've never understood why this doesn't annoy people more :)</div><div class=""><br class=""></div><div class="">As a hack, you can comment out AsmWriter.cpp:2137</div></div></div></div></div></blockquote><br class=""></div><div>You can just create a ModuleSlotTracker and pass it back into the print functions.</div><div><br class=""></div><div>-Chris</div><div><br class=""></div><div><br class=""></div><br class=""></body></html>