Hi, I have a question about the implementation of
aarch64_final_eh_return_addr which is used to point out the return address of the frame According the source code If FP is not needed return gen_frame_mem (DImode, plus_constant (Pmode, stack_pointer_rtx, fp_offset + cfun->machine->frame.saved_regs_size - 2 * UNITS_PER_WORD)); According the frame layout +-------------------------------+ <-- arg_pointer_rtx | | callee-allocated save area | for register varargs | +-------------------------------+ | | local variables | +-------------------------------+ <-- frame_pointer_rtx | | callee-saved registers | +-------------------------------+ | LR' +-------------------------------+ | FP' P+-------------------------------+ <-- hard_frame_pointer_rtx | dynamic allocation +-------------------------------+ | | outgoing stack arguments | +-------------------------------+ <-- stack_pointer_rtx Shouldn't the return value be return gen_frame_mem (DImode, plus_constant (Pmode, stack_pointer_rtx, fp_offset + 2* UNITS_PER_WORD)); Or I just mis-understanding something ? Hope someone could give me a tip. It would be very helpful. Thanks Shiva Chen