Hi Shiva,

I wonder if you have any test case to demonstrate the potential
code-gen issue you are concerned with.

Thanks,
Yufeng

On Thu, Feb 13, 2014 at 2:14 AM, Shiva Chen <shiva0...@gmail.com> wrote:
> 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

Reply via email to