void b (void); /* Normal System V function. */ __attribute__((ms_abi, force_align_arg_pointer)) void a (void) { b (); } When using __attribute__((force_align_arg_pointer)) on 64-bit code, the stack pointer is re-aligned, but SSE movs in pro/epilogues to save/restore clobbers caused by the Microsoft ABI function calling a System V function are emitted unaligned. I posted a patchset for this problem here https://gcc.gnu.org/ml/gcc-patches/2016-12/msg01924.html. Uros advised to resubmit when the next stage 1 rolls around, so filing a bug for now.
Fixed https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=e67d3d383449dc4680615e44098577f45944e4dc