Bernd's original patch to optimize dwarf2 cfi for shrink-wrapping is difficult to analyze because that optimization was done via a random debugging hook during final, and the cfi notes are deleted at the end of final so that we don't get debug comparison failures.
By pulling the note creation out to a separate pass, we can dump the notes and thus debug the optimization. So far I've tested this only on x86_64-linux. It needs a bit more testing across other targets before going in. Any help that can be given there would be welcome. The complete patch set is available at git://gcc.gnu.org/git/gcc.git rth/cfi-pass Thanks, r~ Richard Henderson (6): dwarf2out: Split CFI construction routines into a new file. dwarf2out: Move insn scanning out of final.c. dwarf2out: Emit NOTE_INSN_CFI_* both with and without cfi-asm. dwarf2out: Convert fde_table to a VEC. dwarf2: Extract cfi creation to a new pass. Dump NOTE_INSN_CFI notes. gcc/Makefile.in | 10 +- gcc/ada/gcc-interface/misc.c | 10 - gcc/coretypes.h | 10 + gcc/debug.h | 5 +- gcc/dwarf2cfi.c | 2734 ++++++++++++++++++++++++++++++++++++ gcc/dwarf2out.c | 3171 +++--------------------------------------- gcc/dwarf2out.h | 232 +++- gcc/final.c | 59 +- gcc/function.h | 6 + gcc/gengtype.c | 2 +- gcc/insn-notes.def | 8 + gcc/lto-streamer-in.c | 8 - gcc/passes.c | 1 + gcc/print-rtl.c | 9 + gcc/rtl.h | 15 +- gcc/toplev.c | 5 - gcc/tree-pass.h | 1 + 17 files changed, 3258 insertions(+), 3028 deletions(-) create mode 100644 gcc/dwarf2cfi.c -- 1.7.5.4