From: Richard Henderson Date: Mon, 25 Jul 2011 03:05:06 +0000 (-0700) Subject: re PR debug/49825 (Many testcase failures) X-Git-Tag: releases/gcc-4.7.0~5154 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2edb462ee46b548bf329776139299d29ad355eac;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 70cac5b5c5e6..b9a21ba55d82 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-07-24 Richard Henderson + + PR debug/49825 + * dwarf2cfi.c (cfi_row_equal_p): Don't compare args_size. + 2011-07-24 H.J. Lu PR bootstrap/49835 diff --git a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c index 3ff4c612411c..f715e079e7c4 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);