<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">It's a helper for passes that run after register allocation but still<br>
need a new register they can use without breaking anything. It looks<br>
around nearby instructions[*] to see if there's anything it can prove<br>
is unused at the moment, and as a last ditch effort can spill<br>
registers to the stack.<br></blockquote><div><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">​I am reading TriCore document [1]​. It mention  `<span style="font-family:arial,sans-serif">eliminateFrameIndex`, which is a pass after register allocation,</span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span style="font-family:arial,sans-serif">translates virtual </span><span style="font-family:arial,sans-serif">stack slot reference to </span><span style="font-family:arial,sans-serif">a register-offset pair. If the offset is too large, additional instructions are</span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span style="font-family:arial,sans-serif">needed to compute the effective address, which need more register after the register allocation. Now comes the</span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span style="font-family:arial,sans-serif">register scavenging.</span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span style="font-family:arial,sans-serif"><br></span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span style="font-family:arial,sans-serif">Now I understand what it said after your help.</span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span style="font-family:arial,sans-serif"><br></span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span style="font-family:arial,sans-serif">One last point, I am not native English speaker.  By "</span><span style="font-family:arial,sans-serif">as a last ditch effort can spill </span><span style="font-family:arial,sans-serif">registers to the stack.</span><span style="font-family:arial,sans-serif">", you</span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span style="font-family:arial,sans-serif">mean if </span><span style="font-family:arial,sans-serif">register scavenging cannot save us, then we </span><span style="font-family:arial,sans-serif">have to do the spilling?</span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span style="font-family:arial,sans-serif"><br></span></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span style="font-family:arial,sans-serif">Thanks.</span></div><div><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">​[1] <a href="https://wwwcip.informatik.uni-erlangen.de/~sicherha/foo/tricore-llvm.pdf">https://wwwcip.informatik.uni-erlangen.de/~sicherha/foo/tricore-llvm.pdf</a>​</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Regards,</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">chenwj</div></div></div></div>