<div dir="ltr">On Mon, Apr 22, 2013 at 10:20 AM, Chris Lattner <span dir="ltr"><<a href="mailto:clattner@apple.com" target="_blank">clattner@apple.com</a>></span> wrote:<br><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"><div style="word-wrap:break-word">Hi Eli,<div><br></div><div>What is the specific problem here?  Is the cost to compute this too high, or is the symbol requested for the same MBB multiple times?  If it is the latter, it should be enough to add a simple "MCSymbol*" cache to MBB.  This would be cleaner than adding a scratch buffer to MachineFunction.</div>
<div><br></div><div>-Chris<br><div><br></div></div></div></blockquote><div><br></div><div style>Hi Chris,</div><div style><br></div><div style>My fix addresses the first problem: multiple MBBs in the same MF recomputing the same information, which is wasteful.</div>
<div style>You're raising a good point that there may be another problem hiding here - this computation being done multiple times for a single MBB. In that case, a cache can be added, yes. I'll take a look if this is indeed a problem. In any case, the patch still addresses a slightly different problem of caching most of the computation between different MBBs.</div>
<div style><br></div><div style>Eli</div><div style><br></div><div><br></div><div> </div><div><br></div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word"><div><div></div><div><br><div><div><div class="h5"><div>On Apr 22, 2013, at 9:14 AM, Eli Bendersky <<a href="mailto:eliben@google.com" target="_blank">eliben@google.com</a>> wrote:</div>
<br></div></div><blockquote type="cite"><div style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div><div class="h5"><div dir="ltr">Ping!</div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Thu, Apr 18, 2013 at 3:27 PM, Eli Bendersky<span> </span><span dir="ltr"><<a href="mailto:eliben@google.com" target="_blank">eliben@google.com</a>></span><span> </span>wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr">MachineBasicBlock::getSymbol gets called quite a lot and was doing a lot of repetitive work. Most of the symbol remains unchanged between MBBs in the same function, and yet getSymbol was laboriously reconstructing the full symbol with a concatenation of Twines. This patch optimizes this away: MachineFunction caches the symbol "template" for its MBBs and does a minimal amount of work to generate a new symbol without too much copying.<div>
<br></div><div>There's no change in functionality, but this makes MachineBasicBlock::getSymbol somewhere between 25-50% faster (exact numbers are hard to obtain for this very internal method).</div><div><br></div><div>
Please take a look,</div><div>Eli</div><div><br></div></div></blockquote></div><br></div></div></div>_______________________________________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a></div></blockquote></div><br></div></div></div></blockquote></div><br></div></div>