On Thu, Jul 27, 2017 at 3:50 PM, H.J. Lu <hongjiu...@intel.com> wrote: > execute_dwarf2_frame is called for each funtion. But create_cie_data > is called only once to initialize cie_cfi_row for all functions. Since > INCOMING_FRAME_SP_OFFSET may be different for each function, we can't > use the same INCOMING_FRAME_SP_OFFSET in cie_cfi_row for all functions. > This patch sets cie_cfi_row->cfa.offset to INCOMING_FRAME_SP_OFFSET in > create_pseudo_cfg which is called for each function. > > Tested on x86-64. OK for trunk?
This looks wrong. cie_cfi_row is the state produced by the instructions in the CIE, which don't vary between functions. If INCOMING_FRAME_SP_OFFSET varies, we need to add actual FDE instructions to reflect that, not just clobber our current model of what the CIE means. Jason