aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2011-07-24 20:05:06 -0700
committerRichard Henderson <rth@gcc.gnu.org>2011-07-24 20:05:06 -0700
commit2edb462ee46b548bf329776139299d29ad355eac (patch)
tree9da2b82cfde48ac4fa2848b4537c101f6aaedc30 /gcc
parent96d5384b23d85b963d147d322a404972a1c42f93 (diff)
downloadgcc-2edb462ee46b548bf329776139299d29ad355eac.zip
gcc-2edb462ee46b548bf329776139299d29ad355eac.tar.gz
gcc-2edb462ee46b548bf329776139299d29ad355eac.tar.bz2
re PR debug/49825 (Many testcase failures)
PR debug/49825 Test case gcc.c-torture/compile/pr49474.c, among others. * dwarf2cfi.c (cfi_row_equal_p): Don't compare args_size. From-SVN: r176726
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/dwarf2cfi.c11
2 files changed, 14 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 70cac5b..b9a21ba 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2011-07-24 Richard Henderson <rth@redhat.com>
+
+ PR debug/49825
+ * dwarf2cfi.c (cfi_row_equal_p): Don't compare args_size.
+
2011-07-24 H.J. Lu <hongjiu.lu@intel.com>
PR bootstrap/49835
diff --git a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c
index 3ff4c61..f715e07 100644
--- a/gcc/dwarf2cfi.c
+++ b/gcc/dwarf2cfi.c
@@ -667,8 +667,15 @@ cfi_row_equal_p (dw_cfi_row *a, dw_cfi_row *b)
else if (!cfa_equal_p (&a->cfa, &b->cfa))
return false;
- if (a->args_size != b->args_size)
- return false;
+ /* Logic suggests that we compare args_size here. However, if
+ EXIT_IGNORE_STACK we don't bother tracking the args_size after
+ the last time it really matters within the function. This does
+ in fact lead to paths with differing arg_size, but in cases for
+ which it doesn't matter. */
+ /* ??? If we really want to sanity check the output of the optimizers,
+ find a way to backtrack from epilogues to the last EH site. This
+ would allow us to distinguish regions with garbage args_size and
+ regions where paths ought to agree. */
n_a = VEC_length (dw_cfi_ref, a->reg_save);
n_b = VEC_length (dw_cfi_ref, b->reg_save);