Sibcall fallback
Paulo J. Matos
pocmatos@gmail.com
Wed Jan 6 11:37:00 GMT 2010
On Wed, Jan 6, 2010 at 10:50 AM, Paulo J. Matos <pocmatos@gmail.com> wrote:
> Hi all,
>
> I am trying to implement sibcall optimization for a specific arch in
> 4.3.4. However, this is only important for me to do if it maintains or
> decreases code size.
> I need to know the live registers, frame size, etc. Is this
> information available at TARGET_FUNCTION_OK_FOR_SIBCALL or should this
> hook be mainly used to decide to do sibcall based on analysis of the
> tree?
>
> On the other hand I thought I could try to accept sibcall most of the
> times through TARGET_FUNCTION_OK_FOR_SIBCALL and then on the expand of
> sibcall_epilogue I would fallback to a normal leave if I decide that
> sibcall is not worth it. Is this possible?
>
> If it is, how can I emit a 'normal leave' from sibcall_epilogue?
>
By reading the code for i386 it seems that the solution is to have a
single function that expands the epilogue whose argument indicates if
this should be a sibcall or not and depending on the argument perform
the right actions. (corresponding to the ix_expand_epilogue of i386)
:-)
Thanks,
--
Paulo Jorge Matos - pocmatos at gmail.com
http://www.pmatos.net
More information about the Gcc-help
mailing list