<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Oct 5, 2015 at 9:36 AM, Reid Kleckner via llvm-dev <span dir="ltr"><<a 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">Instruction printing is usually slow because it uses SlotNumbering, which is a whole function analysis to determine what numbers to use for unnamed values.<div><br>If printing is part of your critical path, you can use 'Value::print(raw_ostream&, ModuleSlotTracker&)' instead of operator<<. I believe it will help you do the analysis once and print many instructions.</div></div></blockquote><div><br></div><div>It is still linear in the number of types in the module. (I recently tried to reduce llvm-diff's O((module size)^2) complexity by using ModuleSlotTracker but it still was quadratic even when using moduleslottracker)</div><div><br></div><div>-- Sean Silva</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On Mon, Oct 5, 2015 at 8:17 AM, Stephen Thomas via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div dir="ltr">Hi all,<div><br></div><div>When writing my custom passes, I often emit log messages to llvm::errs() like so:</div><div><br></div><div>llvm::errs() << "Could not handle instruction: " << *Inst << std::endl;</div><div><br></div><div>where Inst is a pointer to an Instruction.</div><div><br></div><div>I've profiled my code and found that this way of printing an Instruction takes a very long time: indeed, it is the bottleneck of my pass. </div><div><br></div><div>Of course, I could always switch these log messages off for production runs, but during development and debugging, I'd like to have them on to make debugging much easier.</div><div><br></div><div>Is there a faster way to print an Instruction?</div><div><br></div><div>Thanks,</div><div>Steve</div></div>
<br></div></div><span class="">_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
<br></span></blockquote></div><br></div>
<br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br></div></div>