]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/56807 (mingw32: Conflict between stack realignment and stack probe destr...
authorKai Tietz <ktietz@redhat.com>
Tue, 10 Dec 2013 16:52:23 +0000 (17:52 +0100)
committerKai Tietz <ktietz@gcc.gnu.org>
Tue, 10 Dec 2013 16:52:23 +0000 (17:52 +0100)
        PR target/56807
        * config/i386/i386.c (ix86_expand_prologue): Address saved
        registers stack-relative, not via frame-pointer.

From-SVN: r205864

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

index 649926ba20210bda8911bf46533d2a6da4f32cf6..f850dfaa0aa5503d73ab4701ff1df87834e476de 100644 (file)
@@ -1,3 +1,9 @@
+2013-12-10  Kai Tietz  <ktietz@redhat.com>
+
+       PR target/56807
+       * config/i386/i386.c (ix86_expand_prologue): Address saved
+       registers stack-relative, not via frame-pointer.
+
 2013-12-03  Marek Polacek  <polacek@redhat.com>
 
        Backport from mainline
index c74dba0506acd30abdc9a912ec1f326dd4366b6c..0675031480485eda9bd735df7db8b3b619d6313d 100644 (file)
@@ -10431,14 +10431,15 @@ ix86_expand_prologue (void)
 
       if (r10_live && eax_live)
         {
-         t = choose_baseaddr (m->fs.sp_offset - allocate);
+         t = plus_constant (Pmode, stack_pointer_rtx, allocate);
          emit_move_insn (r10, gen_frame_mem (Pmode, t));
-         t = choose_baseaddr (m->fs.sp_offset - allocate - UNITS_PER_WORD);
+         t = plus_constant (Pmode, stack_pointer_rtx,
+                            allocate - UNITS_PER_WORD);
          emit_move_insn (eax, gen_frame_mem (Pmode, t));
        }
       else if (eax_live || r10_live)
        {
-         t = choose_baseaddr (m->fs.sp_offset - allocate);
+         t = plus_constant (Pmode, stack_pointer_rtx, allocate);
          emit_move_insn ((eax_live ? eax : r10), gen_frame_mem (Pmode, t));
        }
     }