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: HP-UX IA64 Patch to fix earlier patch

Perhaps you should be including testcases for these patches.  Your last
patch makes it very clear that you wanted to modify store_bit_field, and
now your claim that you meant to modify extract_bit_field all along is not
very convincing.

It would also help if you gave a clearer explanation of what the patch is

FUNCTION_ARG_REG_LITTLE_ENDIAN according to the documentation is intended
to handle structure argument passing conventions.  Using it in either
store_bit_field or extract_bit_field doesn't seem to make much sense, since
they don't have anything to do with calling conventions.  Perhaps this is
necessary when a function argument register is passed to extract_bit_field
and/or store_bit_field.  However, your change affects every bit field
extract/store, regardless of whether it is a function arg reg, so that doesn't
seem right.  Perhaps you need to modify calling convention code to change the
way it is calling extract/store bit field, or perhaps pass another argument
so that it can behave differently when passed a function arg reg.

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.


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