]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/69140 (stack alignment + O1 breaks with Microsoft ABI)
authorUros Bizjak <ubizjak@gmail.com>
Thu, 7 Jan 2016 19:06:37 +0000 (20:06 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Thu, 7 Jan 2016 19:06:37 +0000 (20:06 +0100)
2016-01-07  Uros Bizjak  <ubizjak@gmail.com>

PR target/69140
* config/i386/i386.c (ix86_frame_pointer_required): Enable
frame pointer for TARGET_64BIT_MS_ABI when stack is misaligned.

2016-01-07  Uros Bizjak  <ubizjak@gmail.com>

Revert
2016-01-06  Uros Bizjak  <ubizjak@gmail.com>

PR target/69140
* config/i386/i386.c (ix86_expand_prologue): Declare fs.sp_valid
depending on frame_pointer_needed before remaining integer and SSE
registers are saved.

From-SVN: r232140

gcc/ChangeLog
gcc/config/i386/i386.c

index 215a366b02e9b39c4a5118a1a00908f9e2b3ff2e..db0b95922948866884a2556b33793d352fa83ba2 100644 (file)
@@ -1,3 +1,19 @@
+2016-01-07  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/69140
+       * config/i386/i386.c (ix86_frame_pointer_required): Enable
+       frame pointer for TARGET_64BIT_MS_ABI when stack is misaligned.
+
+2016-01-07  Uros Bizjak  <ubizjak@gmail.com>
+
+       Revert
+       2016-01-06  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/69140
+       * config/i386/i386.c (ix86_expand_prologue): Declare fs.sp_valid
+       depending on frame_pointer_needed before remaining integer and SSE
+       registers are saved.
+
 2016-01-07  Sandra Loosemore <sandra@codesourcery.com>
 
        PR 1078
index 9c3fa70b752cd87a6e49b6facc8f0b2a2a281dbf..aac0847db7ee6b7506ad5499284f841a45417a61 100644 (file)
@@ -10903,6 +10903,10 @@ ix86_frame_pointer_required (void)
   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.  */
@@ -13065,8 +13069,6 @@ ix86_expand_prologue (void)
       m->fs.fp_valid = true;
     }
 
-  m->fs.sp_valid = !frame_pointer_needed;
-
   if (!int_registers_saved)
     ix86_emit_save_regs_using_mov (frame.reg_save_offset);
   if (!sse_registers_saved)