]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/45189 (New stack alignment test failures)
authorRichard Henderson <rth@redhat.com>
Thu, 5 Aug 2010 18:04:58 +0000 (11:04 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 5 Aug 2010 18:04:58 +0000 (11:04 -0700)
PR target/45189
Fix unwind for i386 stack re-alignment.

From-SVN: r162919

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

index 1397b74eb991de01c19e1422db646642b95f6aa1..0f5843141ed3800a416ff359894a9316772b556c 100644 (file)
@@ -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.
index dd81825863760c53b83763283e87ca72fca055de..204211a6bfcce962f168236f62c5d7f11b9fe404 100644 (file)
@@ -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);