This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: a question about argument ARG_POINTER_REGNUM


Ivan Shcherbakov <shcherbakov@eit.uni-kl.de> writes:

> I  have  noticed  that  the  latest  ports  of  GCC  (e.g. i386) use a
> pseudo-register  (argp  in  i386) defined as fixed in FIXED_REGISTERS.
> When  I  implement  it  similarly  in msp430 port (instead of hardware
> register  r5,  add  a  pseudo-register marked as fixed), GCC perfectly
> works  in -O2 mode, however, crashes in -O0 mode by trying to generate
> instruction setting the pseudo-register (argp) explicitly from SP.
>
> My  question  is  whether there is a way of telling GCC that a certain
> register  is  a  pseudo-register  and  should  always be eliminated to
> either  SP  or  FP.  The  ELIMINABLE_REGS  macro  is  set accordingly,
> however,  the actual elimination happens only with optimization turned
> on.

Putting the entry in ELIMINABLE_REGS, and defining
TARGET_CAN_ELIMINATE, should be all that is required.  Registers are
eliminated at all optimization levels.

Ian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]