HP-UX IA64 Patch to fix earlier patch
John David Anglin
dave@hiauly1.hia.nrc.ca
Thu Nov 14 23:27:00 GMT 2002
> Alternatively, I suspect you could get rid of FUNCTION_ARG_REG_LITTLE_ENDIAN
> if you modified the IA-64 FUNCTION_ARG macro to return a PARALLEL instead
> of a REG for your problematic cases. This causes the calling convention
> support code to use emit_group_load/store in expr.c, and these routines
> will left-justify small structures in registers on big-endian targets, which
> is probably the behaviour you want.
I agree with Jim here. Not too long ago, I used this technique to avoid
defining FUNCTION_ARG_REG_LITTLE_ENDIAN on the hppa64 port. I also
managed to fix a long standing bug in the 32-bit port passing small
structs using the same technique. Jim's comment is an over simplification
of what really happens when a DImode value is used in a PARALLEL on
big-endian 32-port. You actually get right-justified data in this case.
See function_arg and function_arg_padding in pa.c.
Dave
--
J. David Anglin dave.anglin@nrc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6605)
More information about the Gcc
mailing list