re PR debug/51902 (lexical_blocks inside inlined_subroutines generate duplicate debug...
authorJakub Jelinek <jakub@redhat.com>
Mon, 5 Mar 2012 20:17:44 +0000 (21:17 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 5 Mar 2012 20:17:44 +0000 (21:17 +0100)
commit1e3c1d950e3723c46ef467306bcaea3a4f1a85f2
tree0a203dfd5709e8e57936d2ab25e4fc15b3529a67
parent8993fde43241743b76372651364048d45ce2309e
re PR debug/51902 (lexical_blocks inside inlined_subroutines generate duplicate debug_ranges)

PR debug/51902
* tree.h (BLOCK_SAME_RANGE): Define.
* function.c (block_fragments_nreverse): Clear BLOCK_SAME_RANGE
if BLOCK_FRAGMENT_CHAIN is non-NULL, but has it cleared.
Also clear BLOCK_SAME_RANGE if fragment chain's supercontext fragment
isn't equal to supercontext fragment's fragment chain.
Adjust BLOCK_SUPERCONTEXT to point to supercontext fragment's
fragment origin.
(blocks_nreverse_all): Likewise.
(reorder_blocks_1): Compute BLOCK_SAME_RANGE bits.  Set
BLOCK_SUPERCONTEXT to supercontext fragment instead of
supercontext fragment's fragment origin.
* dwarf2out.c (add_high_low_attributes): If stmt has the same
range as its parent (or parents thereof etc.), use the parent's
DW_AT_ranges value instead of creating a new .debug_ranges range.

From-SVN: r184958
gcc/ChangeLog
gcc/dwarf2out.c
gcc/function.c
gcc/tree.h