On 3/28/22 10:46, Momchil Velikov wrote:
Your patch seems to significantly increase code-size of several benchmarks — by up to 9%. Would you please investigate whether this can be avoided?
Could you, please, confirm if the size increase is due to having bigger `.eh_frame`/`.debug_frame` sections?
It looks like the reason is generating a bunch of non-sensical unwind info entries for outlined functions, e.g.:
000000bc 0000000000000010 000000c0 FDE cie=00000000 pc=0000000000000c34..0000000000000c3c DW_CFA_nop DW_CFA_nop DW_CFA_nop
That's not nonsensical, that just means the entire unwind for this pc range is contained in the CIE description. The nops are for the alignment of the next record.
I'm working on a patch to not emit .cfi_startproc/.cfi_endproc if a function does not contain any CFI instructions.
Be very careful about what "no cfi" really means for leaf functions, when fasynchronous-unwind-tables is in use or to the debugger.
r~