This is the mail archive of the
mailing list for the GCC project.
Re: flow patch for building ia64
- To: amacleod at cygnus dot com
- Subject: Re: flow patch for building ia64
- From: Richard Henderson <rth at redhat dot com>
- Date: Thu, 26 Jul 2001 17:15:08 -0700
- Cc: gcc-bugs at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- References: <200107262130.OAA03147@seadog.cygnus.com>
On Thu, Jul 26, 2001 at 02:30:52PM -0700, email@example.com wrote:
> So... there are 2 solutions. Since this doesn't seem to be
> affecting anything except ia64, the simple thing is to
> not mark the return_address_register as call-killed. b0 is
> marked, so I dont think this will have any undesired side effects.
This one is in pricipal correct, but can't actually be used.
CALL_USED_REGISTERS *must* include all fixed registers. This
is a bit of historical stupidity that I've not been brave
enough to fix for 3 years now.
> The other option would be to look at the register generated by the
> call to gen_rtx_REG and test whether it is call clobbered or not.
> This seem like a more general solution, but I dont know if that
> might have other unexpected side effects....
I think the best short-term solution is to add an optional
CALL_SAVED_FIXED_REGISTERS (or something) that the target can use
to communicate what the contents of CALL_USED_REGISTERS ought to
be were it not for the historical mistake.
We can then use that in building regs_invalidated_by_call.