On 28 June 2017 at 15:16, Scott Smith <scott.sm...@purestorage.com> wrote: > x86_64 stacks are supposed to be naturally 16-byte aligned. Maybe try a > 32-byte AVX instruction and see if the compiler aligns to a 32-byte > boundary? >
I was able to generate the "andq $-16, %rsp" part of the pattern. The trick was that the compiler then chose to restore it with a simple "movq %rbp, %rsp" instead of the more fancy lea instruction. I am guessing this has something to do with the %ebx register being spilled in order to store the global offset table pointer. Normally, all other registers were spilled after the stack was realigned, but for some reason this one was spilled before the realigning took place. x86_64 PIC code is simpler and there is no need for this spill, so that's why a "mov" was sufficient. _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits