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