<div dir="auto"><span style="font-family:sans-serif">Exactly, but for some architectures SP is not aligned for such case.</span><div dir="auto" style="font-family:sans-serif">My questions is what for, apart of saving few bytes on stack just during execution od leaf function?</div><div dir="auto" style="font-family:sans-serif"><br></div><div dir="auto" style="font-family:sans-serif">Przemek</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">czw., 17 wrz 2020, 17:17 użytkownik David Jones <<a href="mailto:david.jones@metrics.ca">david.jones@metrics.ca</a>> napisał:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Is this really "common"?</div><div><br></div><div>I would expect many architectures to require stack pointer alignment at all times, as a signal/interrupt/fault can happen at any time.</div><div><br></div><div>SPARC is a good example. If an interrupt occurs, the OS must flush all register windows out to the user stack.  This requires that the stack pointer be aligned.  Since you have no control over when an interrupt can occur. you must maintain alignment at all times.</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Sep 17, 2020 at 10:42 AM Przemyslaw Ossowski via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank" rel="noreferrer">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Hi all,</div><div>



















<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:"Calibri",sans-serif">my question is maybe not directly related with LLVM but general
with compilers. <span></span></p>

<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:"Calibri",sans-serif"><span> </span></p>

<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:"Calibri",sans-serif">The common approach is that compilers often don't align
stack pointer for leaf functions if the function utilizes stack just for
keeping variables of small sizes.<span></span></p>

<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:"Calibri",sans-serif">I’m wondering what is the benefit of such behavior.<span></span></p>

<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:"Calibri",sans-serif"><span> </span></p>

<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:"Calibri",sans-serif">Is saving a few bytes of the stack just once worth of such
approach?<span></span></p>

<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:"Calibri",sans-serif">Or maybe something else stands behind it? Is there any other
potential benefit of unaligned Stack Pointer in Leaf Functions?<span></span></p>

<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:"Calibri",sans-serif"><span> </span></p>

<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:"Calibri",sans-serif">Thanks,<span></span></p>

<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:"Calibri",sans-serif">Przemek<span></span></p>





</div></div>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank" rel="noreferrer">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>
</blockquote></div>