--- ./gcc/config/i386/i386.c.orig 2015-11-18 09:45:26.000000000 -0600 +++ ./gcc/config/i386/i386.c 2016-02-05 13:50:07.202981920 -0600 @@ -9677,6 +9677,10 @@ if (TARGET_64BIT_MS_ABI && get_frame_size () > SEH_MAX_FRAME_SIZE) return true; + /* SSE saves require frame-pointer when stack is misaligned. */ + if (TARGET_64BIT_MS_ABI && ix86_incoming_stack_boundary < 128) + return true; + /* In ix86_option_override_internal, TARGET_OMIT_LEAF_FRAME_POINTER turns off the frame pointer by default. Turn it back on now if we've not got a leaf function. */