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: problem with call clobbered regs


Daniel Bayer wrote:
I already did that. The save and restore instructions are generated by
the caller-save code as insn 187 and 188 (24.greg). The code that
calculates the address for the saving is also generated in this pass
(some time later as insns 230 and 231). But there is no code to
calculate the address for the restore.

This isn't a complete description of the problem. What does the RTL look like?


I would assume the address was calculated into a pseudo, in which case using it across the call is fine. It should be reg allocated to a call-saved register. Are there any call-saved registers? If not, that could be a problem. Is there are REG_EQUAL note the insn that calculates the address? If so, then reload could recalculate the address after the call. If the address is in a hard reg instead of a pseudo, then why is it in a hard reg? Who put it in a hard reg, and why was it put in a call-clobbered reg?

You will probably have to step through the caller-save code and answer these questions. The caller-save code is not very complicated, so this shouldn't be very hard.
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com



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