This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
This fixes PR 20268, which is a complaint about the debug info emitted for inlined subroutines when optimizing. Instruction scheduling and other optimizations can cause an inlined subroutine to be split into multiple disjoint address ranges. We were only emitting debug info for one of these address ranges, which led to confusing output from addr2line. This problem can be solved by using DW_AT_ranges instead of DW_AT_high_pc and DW_AT_low_pc. We were already doing this for lexical blocks. This patch extracts the code for this from the lexical block support, and then uses it for both lexical blocks and inlined subroutine blocks. This doesn't do much useful without extra binutils and/or gdb support. The binutils support has already been implemented, and is awaiting review. See http://sources.redhat.com/bugzilla/show_bug.cgi?id=806 This was tested with an ia64-linux bootstrap and make check. There were no regressions. This was also tested with an x86_64-linux gdb make check. There were no regressions. (The ia64-linux gdb make check had too many failures to be useful as a regression check.) I have added this patch to mainline. -- Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com
Attachment:
patch.inline.at-ranges
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |