<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Mar 28, 2014 at 4:50 AM, Renato Golin <span dir="ltr"><<a href="mailto:renato.golin@linaro.org" target="_blank">renato.golin@linaro.org</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">On 28 March 2014 11:16, Chandler Carruth <<a href="mailto:chandlerc@google.com">chandlerc@google.com</a>> wrote:<br>

> Just the reserved part.<br>
<br>
Ok, in that case, I share you concerns.<br>
<br>
We could easily only implement the reserved ones (stack pointer being<br>
the case in hand). If there is any mad reason why allocatable ones<br>
should be used (I heard glibc uses R8 for some special things, haven't<br>
confirmed myself), we can discuss this topic later.</blockquote><div><br></div><div>I'm a bit confused by this. The GCC documentation makes it pretty clear that *only* the allocatable registers are suitable for use as global register variables (and that things like the stack pointer make no sense here). From the doc:</div>
<div><br></div><div><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">"</span>Defining a global register variable in a certain register reserves that register entirely for this use, at least within the current compilation. The register is not allocated for any other purpose in the functions in the current compilation, and is not saved and restored by these functions. Stores into this register are never deleted even if they appear to be dead, but references may be deleted or moved or simplified."</div>
<div><br></div><div>Obviously it's not possible to reserve the stack pointer register entirely for use as a global register variable, and any attempt to do so would be abusing the mechanism.<br></div><div><br></div><div>
Is there some other specification that you guys are working from, or are you basing this on observations of GCC's actual behavior?</div></div></div></div>