aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2009-07-04 19:19:26 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2009-07-04 19:19:26 +0200
commitbd5b2c2d0788f7e35b489171d945b35537899255 (patch)
tree57ae03b713a3684669297bd93ce061114e9fae1d
parent39ba6ab7fb7e302567bc262303f90ec61596b355 (diff)
downloadgcc-bd5b2c2d0788f7e35b489171d945b35537899255.zip
gcc-bd5b2c2d0788f7e35b489171d945b35537899255.tar.gz
gcc-bd5b2c2d0788f7e35b489171d945b35537899255.tar.bz2
re PR debug/40596 (Bad debug info for local variables on i386.)
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
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/dwarf2out.c3
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4a4c3a7..6d96786 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 3324039..01b534c 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -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);