diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-07-25 03:05:06 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-07-25 03:05:06 +0000 |
commit | 215db506f0f7733229ebfc3efcb892c0333d3d49 (patch) | |
tree | 9da2b82cfde48ac4fa2848b4537c101f6aaedc30 /gcc/dwarf2cfi.c | |
parent | d45e065f672227e61f210014b1f1723c5aa11c1b (diff) | |
download | gcc-215db506f0f7733229ebfc3efcb892c0333d3d49.tar.gz |
PR debug/49825
Test case gcc.c-torture/compile/pr49474.c, among others.
* dwarf2cfi.c (cfi_row_equal_p): Don't compare args_size.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176726 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/dwarf2cfi.c')
-rw-r--r-- | gcc/dwarf2cfi.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c index 3ff4c612411..f715e079e7c 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); |