On Thu, Mar 1, 2012 at 5:30 PM, Cameron McInally <span dir="ltr"><<a href="mailto:cameron.mcinally@nyu.edu">cameron.mcinally@nyu.edu</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div class="gmail_quote"><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Aligning the stack to 32 bytes when there are auto AVX vector variables present shouldn't necessarily break the x86-64 ABI, as long as smaller auto variables remain properly aligned.  A similar approach was taken for i386 in GCC in order to support SSE vectors.<br>
<br></blockquote></div></div></div></blockquote><div><br></div><div>This topic is starting to come back to me now. The reason the GCC solution above did not work for us is that we do not build all of the libraries used with our compiler. For example, some are proprietary compiled object files and some are GCC compiled object files from other sources. If our object files called another library, and in turn that library called a function in our object code, it's not possible to ensure that the frame of the current function is still aligned to 32 bytes. That was the determining factor in my implementation.</div>
<div><br></div><div>That is, unless you know something that I don't. I'm pretty new to compiler development. :)</div><div><br></div><div>-Cameron</div></div>