Alternate patch for PR 23868 (fixes IA64, not other platforms)
Mon Aug 21 18:08:00 GMT 2006
Steve Ellcey wrote:
>There has been a patch for PR 23868 that has been out there for a while:
>by Joern Rennecke but it has not been approved. That patch target-izes
>apply_result_mode and fixes some platforms but does not completely fix
>IA64. To fix IA64 we would need to targetize apply_args_mode as well.
>The original change that caused this failure (at least on ia64) was a
>change in how the reg_raw_mode array was initialized so here is a
>different patch that, instead of targetizing apply_result_mode and
>apply_args_mode, targetizes choose_hard_reg_mode in order to get
>reg_raw_mode inialized to better values. I also created an IA64
>specific version of choose_hard_reg_mode which fixes the failure of
>builtin_apply4.c on that target. As a side benefit on IA64, I was able
>to get rid of the use of the HARD_REGNO_CALLER_SAVE_MODE macro. I think
>that if we created a specialized version of choose_hard_reg_mode for
>i386, we could get rid of it from that directory too.
>Anyway, is there any chance that someone could look over this patch and
>approve either this approach or the original patch?
While your patch allows to get more useful modes for single hard registers
which are best saved in a mode that is not a full integer mode, (i.e. it
useful to make the caller-save configuration saner), I don't seet how it
address the issue of how make sure that builtin_apply copies the entire
when the result is passed in more than one hard register, only the first
is indicated with FUNCTION_VALUE_REGNO_P.
More information about the Gcc-patches