Hi,

We have been implementing GCC port for a new target.

The FRAME_POINTER_REGNUM is defined a pseudo register in header file.
I am using the following macros in header file to eliminate the pseudo
arg pointer and frame pointer.
However, there are some instances of frame pointer in the assembly code.

Currently, I have modified "GO_IF_LEGITIMATE_ADDRESS" in C file to 
eliminate these register references in assembly code. However, there
are still some references found.

Please let me know if there is anything else to be defined to remove
these pseudo instances.

The following chunk of code is used in header file to eliminate pseudo
registers.
=======================================================================
#define FRAME_POINTER_REQUIRED 0

#define ELIMINABLE_REGS                     \
 {{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM},   \
  {ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM},  \
  {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}}

#define CAN_ELIMINATE(FROM, TO)         (1)

#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET)                    \
{                                                                       \
  if ((FROM) == FRAME_POINTER_REGNUM)                                   \
    (OFFSET) = ( STACK_POINTER_OFFSET                                   \
                 + crtl->outgoing_args_size );               \
  else if ((FROM) == ARG_POINTER_REGNUM)                                \
    (OFFSET) = ( STACK_POINTER_OFFSET                                   \
                 + xxx_compute_frame_size (get_frame_size (),           \
                                           (long long *)0, (int*)0));   \
  else                                                                  \
    gcc_unreachable ();                                                 \
}
=======================================================================

Thanks & Regards,
Naveen.H.S

Reply via email to