re PR debug/40596 (Bad debug info for local variables on i386.)
authorJakub Jelinek <jakub@redhat.com>
Sat, 4 Jul 2009 17:19:26 +0000 (19:19 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sat, 4 Jul 2009 17:19:26 +0000 (19:19 +0200)
PR debug/40596
* dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
don't check cfa.reg.  Instead of cfa.indirect use
fde && fde->drap_reg != INVALID_REGNUM test.

From-SVN: r149235

gcc/ChangeLog
gcc/dwarf2out.c

index 4a4c3a7d25d05b4c82a34aded099fb9dd4db06a8..6d96786c2d0399b66b6f8df21660dc51b1697a1a 100644 (file)
@@ -1,3 +1,10 @@
+2009-07-04  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/40596
+       * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
+       don't check cfa.reg.  Instead of cfa.indirect use
+       fde && fde->drap_reg != INVALID_REGNUM test.
+
 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
 
        * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
index 33240393c8f2208e345d6bdf69d187c19e8ce9ad..01b534c169469397499922bf8d078b8b7f0f6268 100644 (file)
@@ -10256,11 +10256,10 @@ based_loc_descr (rtx reg, HOST_WIDE_INT offset,
             is aligned without drap, use stack pointer + offset to
             access stack variables.  */
          if (crtl->stack_realign_tried
-             && cfa.reg == HARD_FRAME_POINTER_REGNUM
              && reg == frame_pointer_rtx)
            {
              int base_reg
-               = DWARF_FRAME_REGNUM (cfa.indirect
+               = DWARF_FRAME_REGNUM ((fde && fde->drap_reg != INVALID_REGNUM)
                                      ? HARD_FRAME_POINTER_REGNUM
                                      : STACK_POINTER_REGNUM);
              return new_reg_loc_descr (base_reg, offset);