From: Kai Tietz Date: Tue, 10 Dec 2013 16:52:23 +0000 (+0100) Subject: re PR target/56807 (mingw32: Conflict between stack realignment and stack probe destr... X-Git-Tag: releases/gcc-4.7.4~365 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6ce027dc6df0aab1fc811ed45c08ad0b49aed589;p=thirdparty%2Fgcc.git re PR target/56807 (mingw32: Conflict between stack realignment and stack probe destroys function argument in EAX) PR target/56807 * config/i386/i386.c (ix86_expand_prologue): Address saved registers stack-relative, not via frame-pointer. From-SVN: r205864 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 649926ba2021..f850dfaa0aa5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-12-10 Kai Tietz + + PR target/56807 + * config/i386/i386.c (ix86_expand_prologue): Address saved + registers stack-relative, not via frame-pointer. + 2013-12-03 Marek Polacek Backport from mainline diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index c74dba0506ac..067503148048 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -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)); } }