------- Comment #7 from jakub at gcc dot gnu dot org 2008-08-11 12:09 ------- Sorry, I can't reproduce the first issue with a x86_64-linux -> i?86-darwin cross on the provided preprocessed testcase, tried many different -march=/-mtune= options as well as -f{,no-}asynchronous-unwind-tables. What tuning do you use? What preferred stack size?
The later C testcase I can reproduce, but here the testcase has a frame pointer (insn/f 38 37 39 pr37022.c:4 (set (reg/f:SI 6 bp) (reg/f:SI 7 sp)) 47 {*movsi_1} (nil)) so I must say I don't understand at all why we generate any DW_CFA_GNU_args_size directives. I believe the unwinder won't use them anyway, as in uw_install_context_1 if (!_Unwind_GetGRPtr (current, __builtin_dwarf_sp_column ())) the condition is false (sp is saved in bp). For the -fno-a-u-t we check cfa.reg: if (!flag_asynchronous_unwind_tables && cfa.reg != STACK_POINTER_REGNUM) but not so for the -fa-u-t case. -- jakub at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jason at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37022