2008/7/15 Ramana Radhakrishnan <[EMAIL PROTECTED]>: > Hi Mohamed, > > > > Why not ? Callee save registers are after all registers and the split > is in the ABI's head (so to speak). So GCC is well within its right to > use callee save registers. In fact if you were in a leaf function that > did not make any function calls the first preference would be to > allocate caller save registers and then to allocate callee save > registers - Instead of spilling a caller save register , GCC could > very well use a callee save register and the only extra cost would be > saving and restoring context of the callee save register in the > prologue and the epilogue respectively. >
I agree with you, but what about when there are still caller save register are available and there are no register restrictions for any instructions? In my case i find that GCC has used only the argument registers, stack pointer and callee saved registers. So out of the 16 available registers ony 5+1+4 registers were used, even though there was 6 caller save registers were available > > HTH. > > > cheers > Ramana > > On Tue, Jul 15, 2008 at 7:50 AM, Mohamed Shafi <[EMAIL PROTECTED]> wrote: >> >> Hello all, >> >> I am not sure if this the right mailing list. >> >> I am involved in the porting of gcc 4.1.2 for a 16 bit target. >> In some cases i noticed that callee save registers were getting >> allocated in the body even though there isn't any function call. I >> believe that callee save registers will be allocated only if some >> variable values are required across a function call. So if there is no >> function call there shouldn't be any callee save registers used in a >> function body. So my question is will GCC allocate callee save >> registers for function even if the function doesn't call any other >> function? >> Or is this a gcc bug? >> >> Hope my question is clear. >> >> Regards, >> Shafi > > > > -- > Ramana Radhakrishnan >