This is the mail archive of the 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: Alternate patch for PR 23868 (fixes IA64, not other platforms)

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 can be
useful to make the caller-save configuration saner), I don't seet how it would
address the issue of how make sure that builtin_apply copies the entire result
when the result is passed in more than one hard register, only the first of which
is indicated with FUNCTION_VALUE_REGNO_P.

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