<div dir="ltr"><div class="gmail_extra">Hi David,</div><div class="gmail_extra"><br></div><div class="gmail_extra">Let me outline some ideas I got after reading this code as a sanity-check-request - I have too little knowledge of DBG_VALUE machine instructions, working with machine functions, etc.</div>

<div class="gmail_extra"><div class="gmail_quote"><br></div><div class="gmail_quote">On Fri, Nov 1, 2013 at 1:46 AM, David Blaikie <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</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">To document some of my own state on this issue (I'm happy to take this into another thread or bug to discuss if people think there's a better context for such discussion)... <br>

<br>In DwarfDebug::beginFunction there is a bunch of code (that could probably be refactored into some named functions to make it more documented) but here's the basic idea:<br>
<br><font face="courier new, monospace">For all MBB<br>  For all MI<br>    if it's a debug value<br>      record the location in the 'history' for this variable<br>      mark the register as in-use by a certain variable (what happens if we end up with two variables in the same register? I don't think this code can handle that)<br>

</font></div></blockquote><div><br></div><div>I agree - there are real-life cases when several variables refer to the same register - e.g. in ASan mode addresses of all local variables are defined as offsets from $rsp via DBG_VALUE instruction.</div>

<div>So, instead of [Register]->[Debug variable] mapping we need to have [Register] -> [Vector of debug variables] here.</div><div><br></div><div>The code in this branch also inserts a range-terminator instruction between a pair DBG_VALUE instrs for the same variable if instructions in this pair are from different basic blocks (I assume, this is done for the same</div>

<div>purpose as inserting range-terminators in the second loop, and it can hurt us as well).</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">

<font face="courier new, monospace">
    else<br>      if this instruction clobbers any register<br>       <b> if this instruction is in the same MBB as the current defining debug value for the variable</b><br>          record this instruction in the history (it will act as a debug loc range terminator) of the variable<br>


<br>For all the variables<br>  If the end of the history is debug value (not a non-debug instruction which would terminate the range)<br>    If that debug value is in a different basic block than the final basic block in the function</font><div>


<font face="courier new, monospace">      add the last instruction in the debug values basic block to the history to terminate the range<br></font><br></div></div></blockquote><div><br></div><div>We terminate ranges too early - some registers may not in fact be clobbered between two different basic blocks. However, looks like we *have* all the information we need - DBG_VALUE instructions and</div>
<div>register-clobbering instructions - in DwarfDebug::beginFunction(), and should just properly compute location ranges. It is nontrivial, though, and I think the main purpose range-terminator instructions were added is</div>
<div>to deal with confusion when MBB has more than one predecessor. We need to somehow implement "phi-nodes" for variable locations...</div><div>Suppose we have:</div><div><br></div><div>MBB1:</div><div>  dbg_loc("x") = %rax</div>
<div>  jmp MBB3</div><div>MBB2:</div><div>  dbg_loc("x") = %rdx</div><div>  jmp MBB3</div><div>MBB3:</div><div>  // where is "x" now?</div><div><br></div><div>currently we add dbg_loc("x") = undef at the end of MBB1 and MBB2 for safety, but in general we should do a proper analysis.</div>
<div>Now this looks like a problem, which could be solved by graph traversal :) Basically, we may take first instruction and all the DBG_VALUE instructions as starting points, and scan all the instructions in the order of execution (following jumps), inserting range-terminators if we see a register clobbering instruction or if we enter a new MBB and incoming variable locations are different.</div>
<div><br></div><div>Does it all make sense?</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 dir="ltr"><div><div class="gmail_extra">Hopefully that makes some sense. The bolded text is one of the problematic places - but I don't believe it's correct to simply not do that check (some things do actually get clobbered across basic blocks). It might be as simple as also checking (both at the bolded step, and in the "for all variables" loop) if the register in question is something that won't get clobbered across basic blocks.<br>


<br>Lang - this still seems rather special-cased. I assume we do some inter-BB register allocation above -O0, so how should we be doing this to get accurate live ranges for our debug variables? Just assuming all registers (except the base pointer?) get clobbered at the end of a basic block seems a bit 'rough' at best, but perhaps I'm wrong.</div>


<div class="gmail_extra"><br></div><div class="gmail_extra">- David<br><br><div class="gmail_quote">On Tue, Oct 29, 2013 at 3:33 PM, David Blaikie <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>></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">+Alexey who's encountering this in ASan</div>


<div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Oct 25, 2013 at 1:28 PM, David Blaikie <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>></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"><div>Bump because... argh. (I've also reformatted the samples to remove all the extra newlines, hopefully).<br>



<br>Lang - you want to chat about this some time? Eric & I really aren't sure who else to chat to about this.</div>
<br><div class="gmail_extra"><div class="gmail_quote"><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">


<div class="gmail_extra"><div class="gmail_quote">

<div>Eric - this patch seems to be related to the issue I was discussing at/with you yesterday. Specifically the "or when the basic block ends" part is problematic for cases I'm looking at:</div></div></div>




</div></blockquote><div> </div><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"><div class="gmail_extra">


<div class="gmail_quote">
<div><ol style="margin:0px 0px 0px 45px;padding:0px 0px 0px 1px;border-width:0px 0px 0px 1px;border-left-style:solid;border-left-color:rgb(204,204,204);font-family:InconsolataMedium,monospace;font-size:13px;line-height:16px;vertical-align:baseline;list-style-position:initial;color:rgb(40,40,40);background-color:rgb(248,248,248)">




<li style="margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap"><div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">




<span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;font-weight:bold;line-height:inherit;vertical-align:baseline;color:rgb(0,128,0)">struct</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">foo</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">{</span></div>




</li><li style="margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap"><div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">




  <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">foo</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">()</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">:</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">i</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">(</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">3</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">)</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">{}</span></div>




</li><li style="margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap"><div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">




  <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">foo</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">(</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;font-weight:bold;line-height:inherit;vertical-align:baseline;color:rgb(0,128,0)">const</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">foo</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">&</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">f</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">)</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">:</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">i</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">(</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">f</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">.</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">i</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">)</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">{</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">}</span></div>




</li><li style="margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap"><div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">




  <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(176,0,64)">int</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">i</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">;</span></div>




</li><li style="margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap"><div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">




<span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">};</span></div></li><li style="margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">
</div></li><li style="margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap"><div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">




<span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(176,0,64)">int</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">func</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">(</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">foo</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">f</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">)</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">{</span></div>




</li><li style="margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap"><div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">




  <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;font-weight:bold;line-height:inherit;vertical-align:baseline;color:rgb(0,128,0)">if</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">(</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">!</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">f</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">.</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">i</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">)</span></div>




</li><li style="margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap"><div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">




    <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;font-weight:bold;line-height:inherit;vertical-align:baseline;color:rgb(0,128,0)">return</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">f</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">.</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">i</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">+</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">1</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">;</span></div>




</li><li style="margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap"><div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">




  <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;font-weight:bold;line-height:inherit;vertical-align:baseline;color:rgb(0,128,0)">return</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">f</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">.</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">i</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">+</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">2</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">;</span></div>




</li><li style="margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap"><div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">




}</div></li><li style="margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap"><div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">





</div></li><li style="margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap"><div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">




<span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(176,0,64)">int</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">main</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">()</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">{</span></div>




</li><li style="margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap"><div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">




  <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">foo</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">l</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">;</span></div>




</li><li style="margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap"><div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">




  <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">func</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">(</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">l</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">);</span></div>




</li><li style="margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap"><div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">




<span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">}</span></div></li></ol></div><div><br></div><div>



I get the following assembly for 'func':<br>
<br><div><ol style="margin:0px 0px 0px 45px;padding:0px 0px 0px 1px;border-width:0px 0px 0px 1px;border-left-style:solid;border-left-color:rgb(204,204,204);font-family:InconsolataMedium,monospace;font-size:13px;line-height:16px;vertical-align:baseline;list-style-position:initial;color:rgb(40,40,40)">





<li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.globl</span>  <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(136,0,0)">_Z4func3foo</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.align</span>  <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">16</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">,</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">0x90</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.type</span>   <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(136,0,0)">_Z4func3foo</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">,</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">@function</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(160,160,0)">_Z4func3foo:</span>                            <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:italic;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(64,128,128)"># @_Z4func3foo</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.cfi_startproc</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(160,160,0)">.Lfunc_begin0:</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.loc</span>    <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">1</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">7</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">0</span>                   <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:italic;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(64,128,128)"># test.cpp:7:0</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:italic;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(64,128,128)"># BB#0:                                 # %entry</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(0,0,255)">pushq</span>   <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%rbp</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(160,160,0)">.Ltmp2:</span> </div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.cfi_def_cfa_offset</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">16</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(160,160,0)">.Ltmp3:</span> </div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.cfi_offset</span> <span style="margin:0px;padding:0px;border:1px solid rgb(255,0,0);font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">%</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(136,0,0)">rbp</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">,</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">-</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">16</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(0,0,255)">movq</span>    <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%rsp</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">,</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%rbp</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(160,160,0)">.Ltmp4:</span> </div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.cfi_def_cfa_register</span> <span style="margin:0px;padding:0px;border:1px solid rgb(255,0,0);font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">%</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(136,0,0)">rbp</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:italic;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(64,128,128)">#DEBUG_VALUE: func:f <- RDI</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.loc</span>    <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">1</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">8</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">0</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(136,0,0)">prologue_end</span>      <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:italic;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(64,128,128)"># test.cpp:8:0</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(160,160,0)">.Ltmp5:</span> </div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(0,0,255)">cmpl</span>    <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(136,0,0)">$0</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">,</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">(</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%rdi</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">)</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(0,0,255)">movq</span>    <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%rdi</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">,</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">-</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">16</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">(</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%rbp</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">)</span>         <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:italic;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(64,128,128)"># 8-byte Spill</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(160,160,0)">.Ltmp6:</span> *no</div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:italic;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(64,128,128)">#DEBUG_VALUE: func:f <- [RBP+-16]</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(0,0,255)">jne</span>     <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(136,0,0)">.LBB0_2</span></div>




</li><li style="margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap"><div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">




<span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(160,160,0)"><span style="background-color:rgb(248,248,248)">.</span><span style="background-color:rgb(255,255,0)">Ltmp7</span><span style="background-color:rgb(248,248,248)">:</span></span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:italic;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(64,128,128)"># BB#1:                                 # %if.then</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.loc</span>    <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">1</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">9</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">0</span>                   <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:italic;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(64,128,128)"># test.cpp:9:0</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(0,0,255)">movq</span>    <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">-</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">16</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">(</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%rbp</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">),</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%rax</span>         <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:italic;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(64,128,128)"># 8-byte Reload</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(0,0,255)">movl</span>    <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">(</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%rax</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">),</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%ecx</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(0,0,255)">addl</span>    <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(136,0,0)">$1</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">,</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%ecx</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(0,0,255)">movl</span>    <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%ecx</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">,</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">-</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">4</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">(</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%rbp</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">)</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(0,0,255)">jmp</span>     <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(136,0,0)">.LBB0_3</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(160,160,0)">.Ltmp8:</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(160,160,0)">.LBB0_2:</span>                                <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:italic;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(64,128,128)"># %if.end</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.loc</span>    <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">1</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">10</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">0</span>                  <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:italic;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(64,128,128)"># test.cpp:10:0</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(0,0,255)">movq</span>    <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">-</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">16</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">(</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%rbp</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">),</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%rax</span>         <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:italic;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(64,128,128)"># 8-byte Reload</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(0,0,255)">movl</span>    <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">(</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%rax</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">),</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%ecx</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(0,0,255)">addl</span>    <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(136,0,0)">$2</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">,</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%ecx</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(0,0,255)">movl</span>    <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%ecx</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">,</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">-</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">4</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">(</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%rbp</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">)</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(160,160,0)">.LBB0_3:</span>                                <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:italic;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(64,128,128)"># %return</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.loc</span>    <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">1</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">11</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">0</span>                  <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:italic;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(64,128,128)"># test.cpp:11:0</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(0,0,255)">movl</span>    <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">-</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">4</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">(</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%rbp</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">),</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%eax</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(0,0,255)">popq</span>    <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(25,23,124)">%rbp</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(0,0,255)">ret</span></div>




</li></ol></div></div><div></div></div></div></div></blockquote><div> </div><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"><div class="gmail_extra"><div class="gmail_quote">

<div>And the debug_loc for 'func:f' is:<br><br><ol style="margin:0px 0px 0px 45px;padding:0px 0px 0px 1px;border-width:0px 0px 0px 1px;border-left-style:solid;border-left-color:rgb(204,204,204);font-family:InconsolataMedium,monospace;font-size:13px;line-height:16px;vertical-align:baseline;list-style-position:initial;color:rgb(40,40,40)">





<li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(160,160,0)">.Ldebug_loc0:</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.quad</span>   <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(136,0,0)">.Lfunc_begin0</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.quad</span>   <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(136,0,0)">.Ltmp6</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.Lset0</span> <span style="margin:0px;padding:0px;border:1px solid rgb(255,0,0);font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">=</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(136,0,0)">.Ltmp53</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">-.</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(136,0,0)">Ltmp52</span>                <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:italic;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(64,128,128)"># Loc expr size</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.short</span>  <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(136,0,0)">.Lset0</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(160,160,0)">.Ltmp52:</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.byte</span>   <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">117</span>                     <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:italic;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(64,128,128)"># DW_OP_breg5</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.byte</span>   <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">0</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(160,160,0)">.Ltmp53:</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.quad</span>   <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(136,0,0)">.Ltmp6</span></div>




</li><li style="margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap"><div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">




<span style="background-color:rgb(248,248,248)">        </span><span style="background-color:rgb(248,248,248);margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.quad</span><span style="background-color:rgb(248,248,248)">   </span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(136,0,0)"><span style="background-color:rgb(248,248,248)">.</span><span style="background-color:rgb(255,255,0)">Ltmp7</span></span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.Lset1</span> <span style="margin:0px;padding:0px;border:1px solid rgb(255,0,0);font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">=</span> <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(136,0,0)">.Ltmp55</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">-.</span><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(136,0,0)">Ltmp54</span>                <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:italic;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(64,128,128)"># Loc expr size</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.short</span>  <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(136,0,0)">.Lset1</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(160,160,0)">.Ltmp54:</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.byte</span>   <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">118</span>                     <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:italic;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(64,128,128)"># DW_OP_breg6</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.byte</span>   <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">112</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline">        <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(125,144,41)">.byte</span>   <span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(102,102,102)">6</span></div>




</li><li style="background-color:rgb(248,248,248);margin:0px 0px 0px 3px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;white-space:pre-wrap">




<div style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline"><span style="margin:0px;padding:0px;border:0px;font-family:inherit;font-size:inherit;font-style:inherit;font-variant:inherit;line-height:inherit;vertical-align:baseline;color:rgb(160,160,0)">.Ltmp55:</span></div>




</li></ol><br></div><div>The important point being that the second range for the variable (for -16(%rbp)) ends at the end of the first basic block. Thus for the range tmp7-func_end we have no location information for this variable.<br>





<br>This bug appears to manifest on any non-trivial-pass-by-value parameter and any trivial pass-by-value parameter than ends up lowered to LLVM "byval" (if it's split into multiple reg parameters then we must reconstitute it inside the function and then we track the debug info for that reconstituted value - probably an alloca so everything is good at -O0 at least).<br>





<br>Should we be special casing indirect dbg_values and letting them past the edge of basic blocks? <br>Or only ones relative to the base pointer?<br>Or do we need to have dbg_value MI intrinsics inserted at the beginning of every subsequent basic block to properly communicate where variables are?<br>





Or something else entirely.</div><div><br></div><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">The code is now ready to deal with variables that are sometimes in a register<br>






and sometimes on the stack. We just need to teach emitDebugLoc to say 'stack<br>
slot'.<br></blockquote><div><br></div><div>Not sure if this /\ point is relevant, irrelevant, or something that's been addressed since this commit. My best guess is that this comment is just about how we describe stack slots in a location list - in that we could describe them more compactly than reg+offset (by using fbreg instead of breg) and we aren't. That seems like an easy special case of "is the register the frame register, then use fbreg".</div>





<div> </div><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">
<br>
Modified:<br>
    llvm/trunk/include/llvm/CodeGen/MachineBasicBlock.h<br>
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp<br>
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h<br>
    llvm/trunk/test/CodeGen/X86/dbg-merge-loc-entry.ll<br>
<br>
Modified: llvm/trunk/include/llvm/CodeGen/MachineBasicBlock.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineBasicBlock.h?rev=128327&r1=128326&r2=128327&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineBasicBlock.h?rev=128327&r1=128326&r2=128327&view=diff</a><br>






==============================================================================<br>
--- llvm/trunk/include/llvm/CodeGen/MachineBasicBlock.h (original)<br>
+++ llvm/trunk/include/llvm/CodeGen/MachineBasicBlock.h Fri Mar 25 21:19:36 2011<br>
@@ -309,6 +309,10 @@<br>
   /// instruction in the basic block, or end()<br>
   iterator getLastNonDebugInstr();<br>
<br>
+  const_iterator getLastNonDebugInstr() const {<br>
+    return const_cast<MachineBasicBlock*>(this)->getLastNonDebugInstr();<br>
+  }<br>
+<br>
   /// SplitCriticalEdge - Split the critical edge from this block to the<br>
   /// given successor block, and return the newly created block, or null<br>
   /// if splitting is not possible.<br>
<br>
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=128327&r1=128326&r2=128327&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=128327&r1=128326&r2=128327&view=diff</a><br>






==============================================================================<br>
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Fri Mar 25 21:19:36 2011<br>
@@ -2408,38 +2408,21 @@<br>
   /// collection info from MMI table.<br>
   collectVariableInfoFromMMITable(MF, Processed);<br>
<br>
-  SmallVector<const MachineInstr *, 8> DbgValues;<br>
-  // Collect variable information from DBG_VALUE machine instructions;<br>
-  for (MachineFunction::const_iterator I = Asm->MF->begin(), E = Asm->MF->end();<br>
-       I != E; ++I)<br>
-    for (MachineBasicBlock::const_iterator II = I->begin(), IE = I->end();<br>
-         II != IE; ++II) {<br>
-      const MachineInstr *MInsn = II;<br>
-      if (!MInsn->isDebugValue())<br>
-        continue;<br>
-      DbgValues.push_back(MInsn);<br>
-    }<br>
-<br>
-  // This is a collection of DBG_VALUE instructions describing same variable.<br>
-  SmallVector<const MachineInstr *, 4> MultipleValues;<br>
-  for(SmallVector<const MachineInstr *, 8>::iterator I = DbgValues.begin(),<br>
-        E = DbgValues.end(); I != E; ++I) {<br>
-    const MachineInstr *MInsn = *I;<br>
-    MultipleValues.clear();<br>
-    if (isDbgValueInDefinedReg(MInsn))<br>
-      MultipleValues.push_back(MInsn);<br>
-    DIVariable DV(MInsn->getOperand(MInsn->getNumOperands() - 1).getMetadata());<br>
-    if (Processed.count(DV) != 0)<br>
+  for (SmallVectorImpl<const MDNode*>::const_iterator<br>
+         UVI = UserVariables.begin(), UVE = UserVariables.end(); UVI != UVE;<br>
+         ++UVI) {<br>
+    const MDNode *Var = *UVI;<br>
+    if (Processed.count(Var))<br>
       continue;<br>
<br>
-    for (SmallVector<const MachineInstr *, 8>::iterator MI = I+1,<br>
-           ME = DbgValues.end(); MI != ME; ++MI) {<br>
-      const MDNode *Var =<br>
-        (*MI)->getOperand((*MI)->getNumOperands()-1).getMetadata();<br>
-      if (Var == DV)<br>
-        MultipleValues.push_back(*MI);<br>
-    }<br>
+    // History contains relevant DBG_VALUE instructions for Var and instructions<br>
+    // clobbering it.<br>
+    SmallVectorImpl<const MachineInstr*> &History = DbgValues[Var];<br>
+    if (History.empty())<br>
+      continue;<br>
+    const MachineInstr *MInsn = History.front();<br>
<br>
+    DIVariable DV(Var);<br>
     DbgScope *Scope = NULL;<br>
     if (DV.getTag() == dwarf::DW_TAG_arg_variable &&<br>
         DISubprogram(DV.getContext()).describes(MF->getFunction()))<br>
@@ -2451,6 +2434,7 @@<br>
       continue;<br>
<br>
     Processed.insert(DV);<br>
+    assert(MInsn->isDebugValue() && "History must begin with debug value");<br>
     DbgVariable *RegVar = new DbgVariable(DV);<br>
     if (!addCurrentFnArgument(MF, RegVar, Scope))<br>
       Scope->addVariable(RegVar);<br>
@@ -2458,21 +2442,21 @@<br>
       DbgVariableToDbgInstMap[AbsVar] = MInsn;<br>
       VarToAbstractVarMap[RegVar] = AbsVar;<br>
     }<br>
-    if (MultipleValues.size() <= 1 && !RegClobberInsn.count(MInsn)) {<br>
+<br>
+    // Simple ranges that are fully coalesced.<br>
+    if (History.size() <= 1 || (History.size() == 2 &&<br>
+                                MInsn->isIdenticalTo(History.back()))) {<br>
       DbgVariableToDbgInstMap[RegVar] = MInsn;<br>
       continue;<br>
     }<br>
<br>
     // handle multiple DBG_VALUE instructions describing one variable.<br>
-    if (DotDebugLocEntries.empty())<br>
-      RegVar->setDotDebugLocOffset(0);<br>
-    else<br>
-      RegVar->setDotDebugLocOffset(DotDebugLocEntries.size());<br>
+    RegVar->setDotDebugLocOffset(DotDebugLocEntries.size());<br>
<br>
-    for (SmallVector<const MachineInstr *, 4>::iterator<br>
-           MVI = MultipleValues.begin(), MVE = MultipleValues.end();<br>
-         MVI != MVE; ++MVI) {<br>
-      const MachineInstr *Begin = *MVI;<br>
+    for (SmallVectorImpl<const MachineInstr*>::const_iterator<br>
+           HI = History.begin(), HE = History.end(); HI != HE; ++HI) {<br>
+      const MachineInstr *Begin = *HI;<br>
+      assert(Begin->isDebugValue() && "Invalid History entry");<br>
       MachineLocation MLoc;<br>
       if (Begin->getNumOperands() == 3) {<br>
         if (Begin->getOperand(0).isReg() && Begin->getOperand(1).isImm())<br>
@@ -2480,6 +2464,7 @@<br>
       } else<br>
         MLoc = Asm->getDebugValueLocation(Begin);<br>
<br>
+      // FIXME: emitDebugLoc only understands registers.<br>
       if (!MLoc.getReg())<br>
         continue;<br>
<br>
@@ -2487,17 +2472,23 @@<br>
       const MCSymbol *FLabel = getLabelBeforeInsn(Begin);<br>
       const MCSymbol *SLabel = 0;<br>
<br>
-      if (const MachineInstr *ClobberMI = RegClobberInsn.lookup(Begin))<br>
-        // The register range starting at Begin may be clobbered.<br>
-        SLabel = getLabelAfterInsn(ClobberMI);<br>
-      else if (MVI + 1 == MVE)<br>
-        // If Begin is the last instruction then its value is valid<br>
+      if (HI + 1 == HE)<br>
+        // If Begin is the last instruction in History then its value is valid<br>
         // until the end of the funtion.<br>
         SLabel = FunctionEndSym;<br>
-      else<br>
-        // The value is valid until the next DBG_VALUE.<br>
-        SLabel = getLabelBeforeInsn(MVI[1]);<br>
+      else {<br>
+        const MachineInstr *End = HI[1];<br>
+        if (End->isDebugValue())<br>
+          SLabel = getLabelBeforeInsn(End);<br>
+        else {<br>
+          // End is a normal instruction clobbering the range.<br>
+          SLabel = getLabelAfterInsn(End);<br>
+          assert(SLabel && "Forgot label after clobber instruction");<br>
+          ++HI;<br>
+        }<br>
+      }<br>
<br>
+      // The value is valid until the next DBG_VALUE or clobber.<br>
       DotDebugLocEntries.push_back(DotDebugLocEntry(FLabel, SLabel, MLoc));<br>
     }<br>
     DotDebugLocEntries.push_back(DotDebugLocEntry());<br>
@@ -2519,21 +2510,14 @@<br>
<br>
 /// getLabelBeforeInsn - Return Label preceding the instruction.<br>
 const MCSymbol *DwarfDebug::getLabelBeforeInsn(const MachineInstr *MI) {<br>
-  DenseMap<const MachineInstr *, MCSymbol *>::iterator I =<br>
-    LabelsBeforeInsn.find(MI);<br>
-  if (I == LabelsBeforeInsn.end())<br>
-    // FunctionBeginSym always preceeds all the instruction in current function.<br>
-    return FunctionBeginSym;<br>
-  return I->second;<br>
+  MCSymbol *Label = LabelsBeforeInsn.lookup(MI);<br>
+  assert(Label && "Didn't insert label before instruction");<br>
+  return Label;<br>
 }<br>
<br>
 /// getLabelAfterInsn - Return Label immediately following the instruction.<br>
 const MCSymbol *DwarfDebug::getLabelAfterInsn(const MachineInstr *MI) {<br>
-  DenseMap<const MachineInstr *, MCSymbol *>::iterator I =<br>
-    LabelsAfterInsn.find(MI);<br>
-  if (I == LabelsAfterInsn.end())<br>
-    return NULL;<br>
-  return I->second;<br>
+  return LabelsAfterInsn.lookup(MI);<br>
 }<br>
<br>
 /// beginInstruction - Process beginning of an instruction.<br>
@@ -2552,14 +2536,22 @@<br>
   }<br>
<br>
   // Insert labels where requested.<br>
-  if (!InsnNeedsLabel.count(MI))<br>
+  DenseMap<const MachineInstr*, MCSymbol*>::iterator I =<br>
+    LabelsBeforeInsn.find(MI);<br>
+<br>
+  // No label needed.<br>
+  if (I == LabelsBeforeInsn.end())<br>
+    return;<br>
+<br>
+  // Label already assigned.<br>
+  if (I->second)<br>
     return;<br>
<br>
   if (!PrevLabel) {<br>
     PrevLabel = MMI->getContext().CreateTempSymbol();<br>
     Asm->OutStreamer.EmitLabel(PrevLabel);<br>
   }<br>
-  LabelsBeforeInsn[MI] = PrevLabel;<br>
+  I->second = PrevLabel;<br>
 }<br>
<br>
 /// endInstruction - Process end of an instruction.<br>
@@ -2569,7 +2561,15 @@<br>
   if (!MI->isDebugValue())<br>
     PrevLabel = 0;<br>
<br>
-  if (!InsnsNeedsLabelAfter.count(MI))<br>
+  DenseMap<const MachineInstr*, MCSymbol*>::iterator I =<br>
+    LabelsAfterInsn.find(MI);<br>
+<br>
+  // No label needed.<br>
+  if (I == LabelsAfterInsn.end())<br>
+    return;<br>
+<br>
+  // Label already assigned.<br>
+  if (I->second)<br>
     return;<br>
<br>
   // We need a label after this instruction.<br>
@@ -2577,7 +2577,7 @@<br>
     PrevLabel = MMI->getContext().CreateTempSymbol();<br>
     Asm->OutStreamer.EmitLabel(PrevLabel);<br>
   }<br>
-  LabelsAfterInsn[MI] = PrevLabel;<br>
+  I->second = PrevLabel;<br>
 }<br>
<br>
 /// getOrCreateDbgScope - Create DbgScope for the scope.<br>
@@ -2837,8 +2837,8 @@<br>
            RE = Ranges.end(); RI != RE; ++RI) {<br>
       assert(RI->first && "DbgRange does not have first instruction!");<br>
       assert(RI->second && "DbgRange does not have second instruction!");<br>
-      InsnNeedsLabel.insert(RI->first);<br>
-      InsnsNeedsLabelAfter.insert(RI->second);<br>
+      requestLabelBeforeInsn(RI->first);<br>
+      requestLabelAfterInsn(RI->second);<br>
     }<br>
   }<br>
 }<br>
@@ -2916,46 +2916,78 @@<br>
<br>
   recordSourceLine(Line, Col, TheScope);<br>
<br>
+  assert(UserVariables.empty() && DbgValues.empty() && "Maps weren't cleaned");<br>
+<br>
   /// ProcessedArgs - Collection of arguments already processed.<br>
   SmallPtrSet<const MDNode *, 8> ProcessedArgs;<br>
<br>
-  /// LastDbgValue - Refer back to the last DBG_VALUE instruction to mention MD.<br>
-  DenseMap<const MDNode*, const MachineInstr*> LastDbgValue;<br>
-<br>
   const TargetRegisterInfo *TRI = Asm->TM.getRegisterInfo();<br>
<br>
   /// LiveUserVar - Map physreg numbers to the MDNode they contain.<br>
   std::vector<const MDNode*> LiveUserVar(TRI->getNumRegs());<br>
<br>
   for (MachineFunction::const_iterator I = MF->begin(), E = MF->end();<br>
-       I != E; ++I)<br>
+       I != E; ++I) {<br>
+    bool AtBlockEntry = true;<br>
     for (MachineBasicBlock::const_iterator II = I->begin(), IE = I->end();<br>
          II != IE; ++II) {<br>
       const MachineInstr *MI = II;<br>
-      DebugLoc DL = MI->getDebugLoc();<br>
+<br>
       if (MI->isDebugValue()) {<br>
         assert (MI->getNumOperands() > 1 && "Invalid machine instruction!");<br>
<br>
-        // Keep track of variables in registers.<br>
+        // Keep track of user variables.<br>
         const MDNode *Var =<br>
           MI->getOperand(MI->getNumOperands() - 1).getMetadata();<br>
-        LastDbgValue[Var] = MI;<br>
+<br>
+        // Variable is in a register, we need to check for clobbers.<br>
         if (isDbgValueInDefinedReg(MI))<br>
           LiveUserVar[MI->getOperand(0).getReg()] = Var;<br>
<br>
-        DIVariable DV(Var);<br>
-        if (!DV.Verify()) continue;<br>
-        // If DBG_VALUE is for a local variable then it needs a label.<br>
-        if (DV.getTag() != dwarf::DW_TAG_arg_variable)<br>
-          InsnNeedsLabel.insert(MI);<br>
-        // DBG_VALUE for inlined functions argument needs a label.<br>
-        else if (!DISubprogram(getDISubprogram(DV.getContext())).<br>
-                 describes(MF->getFunction()))<br>
-          InsnNeedsLabel.insert(MI);<br>
-        // DBG_VALUE indicating argument location change needs a label.<br>
-        else if (!ProcessedArgs.insert(DV))<br>
-          InsnNeedsLabel.insert(MI);<br>
+        // Check the history of this variable.<br>
+        SmallVectorImpl<const MachineInstr*> &History = DbgValues[Var];<br>
+        if (History.empty()) {<br>
+          UserVariables.push_back(Var);<br>
+          // The first mention of a function argument gets the FunctionBeginSym<br>
+          // label, so arguments are visible when breaking at function entry.<br>
+          DIVariable DV(Var);<br>
+          if (DV.Verify() && DV.getTag() == dwarf::DW_TAG_arg_variable &&<br>
+              DISubprogram(getDISubprogram(DV.getContext()))<br>
+                .describes(MF->getFunction()))<br>
+            LabelsBeforeInsn[MI] = FunctionBeginSym;<br>
+        } else {<br>
+          // We have seen this variable before. Try to coalesce DBG_VALUEs.<br>
+          const MachineInstr *Prev = History.back();<br>
+          if (Prev->isDebugValue()) {<br>
+            // Coalesce identical entries at the end of History.<br>
+            if (History.size() >= 2 &&<br>
+                Prev->isIdenticalTo(History[History.size() - 2]))<br>
+              History.pop_back();<br>
+<br>
+            // Terminate old register assignments that don't reach MI;<br>
+            MachineFunction::const_iterator PrevMBB = Prev->getParent();<br>
+            if (PrevMBB != I && (!AtBlockEntry || llvm::next(PrevMBB) != I) &&<br>
+                isDbgValueInDefinedReg(Prev)) {<br>
+              // Previous register assignment needs to terminate at the end of<br>
+              // its basic block.<br>
+              MachineBasicBlock::const_iterator LastMI =<br>
+                PrevMBB->getLastNonDebugInstr();<br>
+              if (LastMI == PrevMBB->end())<br>
+                // Drop DBG_VALUE for empty range.<br>
+                History.pop_back();<br>
+              else {<br>
+                // Terminate after LastMI.<br>
+                History.push_back(LastMI);<br>
+              }<br>
+            }<br>
+          }<br>
+        }<br>
+        History.push_back(MI);<br>
       } else {<br>
+        // Not a DBG_VALUE instruction.<br>
+        if (!MI->isLabel())<br>
+          AtBlockEntry = false;<br>
+<br>
         // Check if the instruction clobbers any registers with debug vars.<br>
         for (MachineInstr::const_mop_iterator MOI = MI->operands_begin(),<br>
                MOE = MI->operands_end(); MOI != MOE; ++MOI) {<br>
@@ -2970,19 +3002,57 @@<br>
             LiveUserVar[Reg] = 0;<br>
<br>
             // Was MD last defined by a DBG_VALUE referring to Reg?<br>
-            const MachineInstr *Last = LastDbgValue.lookup(Var);<br>
-            if (!Last || Last->getParent() != MI->getParent())<br>
+            DbgValueHistoryMap::iterator HistI = DbgValues.find(Var);<br>
+            if (HistI == DbgValues.end())<br>
               continue;<br>
-            if (!isDbgValueInDefinedReg(Last) ||<br>
-                Last->getOperand(0).getReg() != Reg)<br>
+            SmallVectorImpl<const MachineInstr*> &History = HistI->second;<br>
+            if (History.empty())<br>
               continue;<br>
-            // MD is clobbered. Make sure the next instruction gets a label.<br>
-            InsnsNeedsLabelAfter.insert(MI);<br>
-            RegClobberInsn[Last] = MI;<br>
+            const MachineInstr *Prev = History.back();<br>
+            // Sanity-check: Register assignments are terminated at the end of<br>
+            // their block.<br>
+            if (!Prev->isDebugValue() || Prev->getParent() != MI->getParent())<br>
+              continue;<br>
+            // Is the variable still in Reg?<br>
+            if (!isDbgValueInDefinedReg(Prev) ||<br>
+                Prev->getOperand(0).getReg() != Reg)<br>
+              continue;<br>
+            // Var is clobbered. Make sure the next instruction gets a label.<br>
+            History.push_back(MI);<br>
           }<br>
         }<br>
       }<br>
     }<br>
+  }<br>
+<br>
+  for (DbgValueHistoryMap::iterator I = DbgValues.begin(), E = DbgValues.end();<br>
+       I != E; ++I) {<br>
+    SmallVectorImpl<const MachineInstr*> &History = I->second;<br>
+    if (History.empty())<br>
+      continue;<br>
+<br>
+    // Make sure the final register assignments are terminated.<br>
+    const MachineInstr *Prev = History.back();<br>
+    if (Prev->isDebugValue() && isDbgValueInDefinedReg(Prev)) {<br>
+      const MachineBasicBlock *PrevMBB = Prev->getParent();<br>
+      MachineBasicBlock::const_iterator LastMI = PrevMBB->getLastNonDebugInstr();<br>
+      if (LastMI == PrevMBB->end())<br>
+        // Drop DBG_VALUE for empty range.<br>
+        History.pop_back();<br>
+      else {<br>
+        // Terminate after LastMI.<br>
+        History.push_back(LastMI);<br>
+      }<br>
+    }<br>
+    // Request labels for the full history.<br>
+    for (unsigned i = 0, e = History.size(); i != e; ++i) {<br>
+      const MachineInstr *MI = History[i];<br>
+      if (MI->isDebugValue())<br>
+        requestLabelBeforeInsn(MI);<br>
+      else<br>
+        requestLabelAfterInsn(MI);<br>
+    }<br>
+  }<br>
<br>
   PrevInstLoc = DebugLoc();<br>
   PrevLabel = FunctionBeginSym;<br>
@@ -3043,13 +3113,12 @@<br>
   // Clear debug info<br>
   CurrentFnDbgScope = NULL;<br>
   CurrentFnArguments.clear();<br>
-  InsnNeedsLabel.clear();<br>
   DbgVariableToFrameIndexMap.clear();<br>
   VarToAbstractVarMap.clear();<br>
   DbgVariableToDbgInstMap.clear();<br>
   DeleteContainerSeconds(DbgScopeMap);<br>
-  InsnsNeedsLabelAfter.clear();<br>
-  RegClobberInsn.clear();<br>
+  UserVariables.clear();<br>
+  DbgValues.clear();<br>
   ConcreteScopes.clear();<br>
   DeleteContainerSeconds(AbstractScopes);<br>
   AbstractScopesList.clear();<br>
<br>
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h?rev=128327&r1=128326&r2=128327&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h?rev=128327&r1=128326&r2=128327&view=diff</a><br>






==============================================================================<br>
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h (original)<br>
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h Fri Mar 25 21:19:36 2011<br>
@@ -218,19 +218,16 @@<br>
   /// instruction.<br>
   DenseMap<const MachineInstr *, MCSymbol *> LabelsAfterInsn;<br>
<br>
-  /// insnNeedsLabel - Collection of instructions that need a label to mark<br>
-  /// a debuggging information entity.<br>
-  SmallPtrSet<const MachineInstr *, 8> InsnNeedsLabel;<br>
-<br>
-  /// InsnsNeedsLabelAfter - Collection of instructions that need a label after<br>
-  /// the instruction because they end a scope of clobber a register.<br>
-  SmallPtrSet<const MachineInstr *, 8> InsnsNeedsLabelAfter;<br>
-<br>
-  /// RegClobberInsn - For each DBG_VALUE instruction referring to a register<br>
-  /// that is clobbered before the variable gets a new DBG_VALUE, map the<br>
-  /// instruction that clobbered the register. This instruction will also be in<br>
-  /// InsnsNeedsLabelAfter.<br>
-  DenseMap<const MachineInstr *, const MachineInstr *> RegClobberInsn;<br>
+  /// UserVariables - Every user variable mentioned by a DBG_VALUE instruction<br>
+  /// in order of appearance.<br>
+  SmallVector<const MDNode*, 8> UserVariables;<br>
+<br>
+  /// DbgValues - For each user variable, keep a list of DBG_VALUE<br>
+  /// instructions in order. The list can also contain normal instructions that<br>
+  /// clobber the previous DBG_VALUE.<br>
+  typedef DenseMap<const MDNode*, SmallVector<const MachineInstr*, 4> ><br>
+    DbgValueHistoryMap;<br>
+  DbgValueHistoryMap DbgValues;<br>
<br>
   SmallVector<const MCSymbol *, 8> DebugRangeSymbols;<br>
<br>
@@ -570,6 +567,23 @@<br>
   /// side table maintained by MMI.<br>
   void collectVariableInfoFromMMITable(const MachineFunction * MF,<br>
                                        SmallPtrSet<const MDNode *, 16> &P);<br>
+<br>
+  /// requestLabelBeforeInsn - Ensure that a label will be emitted before MI.<br>
+  void requestLabelBeforeInsn(const MachineInstr *MI) {<br>
+    LabelsBeforeInsn.insert(std::make_pair(MI, (MCSymbol*)0));<br>
+  }<br>
+<br>
+  /// getLabelBeforeInsn - Return Label preceding the instruction.<br>
+  const MCSymbol *getLabelBeforeInsn(const MachineInstr *MI);<br>
+<br>
+  /// requestLabelAfterInsn - Ensure that a label will be emitted after MI.<br>
+  void requestLabelAfterInsn(const MachineInstr *MI) {<br>
+    LabelsAfterInsn.insert(std::make_pair(MI, (MCSymbol*)0));<br>
+  }<br>
+<br>
+  /// getLabelAfterInsn - Return Label immediately following the instruction.<br>
+  const MCSymbol *getLabelAfterInsn(const MachineInstr *MI);<br>
+<br>
 public:<br>
   //===--------------------------------------------------------------------===//<br>
   // Main entry points.<br>
@@ -593,12 +607,6 @@<br>
   ///<br>
   void endFunction(const MachineFunction *MF);<br>
<br>
-  /// getLabelBeforeInsn - Return Label preceding the instruction.<br>
-  const MCSymbol *getLabelBeforeInsn(const MachineInstr *MI);<br>
-<br>
-  /// getLabelAfterInsn - Return Label immediately following the instruction.<br>
-  const MCSymbol *getLabelAfterInsn(const MachineInstr *MI);<br>
-<br>
   /// beginInstruction - Process beginning of an instruction.<br>
   void beginInstruction(const MachineInstr *MI);<br>
<br>
<br>
Modified: llvm/trunk/test/CodeGen/X86/dbg-merge-loc-entry.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/dbg-merge-loc-entry.ll?rev=128327&r1=128326&r2=128327&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/dbg-merge-loc-entry.ll?rev=128327&r1=128326&r2=128327&view=diff</a><br>






==============================================================================<br>
--- llvm/trunk/test/CodeGen/X86/dbg-merge-loc-entry.ll (original)<br>
+++ llvm/trunk/test/CodeGen/X86/dbg-merge-loc-entry.ll Fri Mar 25 21:19:36 2011<br>
@@ -4,7 +4,7 @@<br>
<br>
 ;CHECK: Ldebug_loc0:<br>
 ;CHECK-NEXT:   .quad   Lfunc_begin0<br>
-;CHECK-NEXT:   .quad   Lfunc_end0<br>
+;CHECK-NEXT:   .quad   L<br>
 ;CHECK-NEXT:   .short  1                       ## Loc expr size<br>
 ;CHECK-NEXT:   .byte   85                      ## DW_OP_reg5<br>
 ;CHECK-NEXT:   .quad   0<br>
<br>
<br>
_______________________________________________<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><br>
</blockquote></div><br></div></div>
</blockquote></div><br></div></div>
</blockquote></div><br></div>
</blockquote></div><br></div></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div>Alexey Samsonov, MSK</div>
</div></div>