QUery regarding target macros ELIMINABLE_REGS and CAN_ELIMINATE.
Ian Lance Taylor
Wed Apr 22 14:28:00 GMT 2009
sumanth <email@example.com> writes:
> Ian Lance Taylor wrote:
>> sumanth <firstname.lastname@example.org> writes:
>>> But, my code generated is not according to CAN_ELIMINATE . It is not
>>> replacing FRAME_POINTER_REGNUM with HARD_FRAME_POINTER_REGNUM.
>> Frame pointer elimination is based on FRAME_POINTER_REQUIRED. You need
>> to set both that and CAN_ELIMINATE to prevent frame pointer elimination.
> Currently I am using #define FRAME_POINTER_REQUIRED
> How ever i tried with #define FRAME_POINTER_REQUIRED 0 too and my
> result is same.
> Any suggestions are welcome
If FRAME_POINTER_REQUIRED is 0, and ELIMINABLE_REGS is defined, and
CAN_ELIMINATE (FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM) returns
0, then the register should not be eliminated.
I may have gotten confused about what you want. Do you want
FRAME_POINTER_REGNUM replaced by HARD_FRAME_POINTER_REGNUM or not? If
you do want it replaced, then CAN_ELIMINATE must return 1 for that case.
If you do not want it eliminated, then I think that both must be real
More information about the Gcc-help