aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2010-08-05 11:04:58 -0700
committerRichard Henderson <rth@gcc.gnu.org>2010-08-05 11:04:58 -0700
commit55b324a67cf91568372f4e93c7dae01a572de9f4 (patch)
tree3fef0fc2e31427b0828ceccd0fa7c42aeb54c987 /gcc
parent29e9efdf755f49cc25a664586c42eacd43e611e0 (diff)
downloadgcc-55b324a67cf91568372f4e93c7dae01a572de9f4.zip
gcc-55b324a67cf91568372f4e93c7dae01a572de9f4.tar.gz
gcc-55b324a67cf91568372f4e93c7dae01a572de9f4.tar.bz2
re PR target/45189 (New stack alignment test failures)
PR target/45189 Fix unwind for i386 stack re-alignment. From-SVN: r162919
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/i386/i386.c3
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1397b74..0f58431 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2010-08-05 Richard Henderson <rth@redhat.com>
+
+ PR target/45189
+ * config/i386/i386.c (ix86_emit_save_reg_using_mov): Make sure
+ the alignment constant is properly sign-extended.
+
2010-08-05 Richard Guenther <rguenther@suse.de>
* expr.c (store_expr): Use emit_block_move only if both
@@ -6,7 +12,7 @@
2010-08-05 Richard Henderson <rth@redhat.com>
- PR 45189
+ PR debug/45188
* dwarf2out.c (DWARF2_UNWIND_INFO): Provide default definition.
(INCOMING_RETURN_ADDR_RTX): Likewise.
(dwarf2out_do_frame): Remove conditional compilation.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index dd81825..204211a 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -8639,7 +8639,8 @@ ix86_emit_save_reg_using_mov (enum machine_mode mode, unsigned int regno,
reference to the locations within the frame. Instead,
simply compute the location of the aligned frame from
the frame pointer. */
- addr = GEN_INT (-crtl->stack_alignment_needed / BITS_PER_UNIT);
+ addr = GEN_INT (-(HOST_WIDE_INT)crtl->stack_alignment_needed
+ / BITS_PER_UNIT);
addr = gen_rtx_AND (Pmode, hard_frame_pointer_rtx, addr);
addr = plus_constant (addr, -cfa_offset);
mem = gen_rtx_MEM (mode, addr);