re PR debug/49825 (Many testcase failures)
authorRichard Henderson <rth@redhat.com>
Mon, 25 Jul 2011 03:05:06 +0000 (20:05 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Mon, 25 Jul 2011 03:05:06 +0000 (20:05 -0700)
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

gcc/ChangeLog
gcc/dwarf2cfi.c

index 70cac5b5c5e6c8f8cb50ad7b6c7aadc66782ba5b..b9a21ba55d825acd677649c7cc068109e4d13e5c 100644 (file)
@@ -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
index 3ff4c612411cac5fb899f6c38176467b1f87f4bf..f715e079e7c4aafce1219c2e7e5608296d7a1fa5 100644 (file)
@@ -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);